Я всегда был тупым и не мог отличить инвертированное хранилище от столбчатого, сегодня у меня есть время разобраться, есть четыре основных понятия, которые нужно прояснить:
Метод индексации: прямой индекс, обратный индекс (инвертированный)
Метод хранения: хранение строк, хранение столбцов
Структура данных: HashMap, B-Tree, BitMap...
Структура хранения:
Последовательная организация (последовательные файлы)
Организация индекса (индексный файл)
хэш-организация (хэш-файл)
Организация сети (файл с несколькими ключевыми словами)
индексный метод
Метод индексации является направляющей идеей, которая не связана напрямую с конкретной структурой данных и структурой хранения.
Прямой индекс: DocId->Value
Обратный индекс: значение-> docid
Перевернутый индекс
Инвертированный индекс — это обратный индекс, который является самым основным методом индексирования при поиске информации. В частности, индекс хранится в виде инвертированной таблицы и инвертированной цепочки. В инвертированной таблице хранятся все значения, а в инвертированной цепочке хранится список DocId. . . .
способ хранения
Метод хранения — это метод хранения значения в положительной строке, а также руководящая идеология, которая не имеет ничего общего с конкретной структурой данных и структурой хранения.
Основная память хранения разделена на строки и (ориентированные на столбцы) хранение двух типов столбцов.
Хранить по строкам
В качестве минимальной единицы хранения используется одна строка, а каждый столбец представлен смещением.
Запросы без индексов используют много операций ввода-вывода.
Mysql — это метод хранения на основе строк.Для безусловного поиска по одному столбцу необходимо пройти всю таблицу.
хранить по столбцу
Используйте один столбец в качестве записи, записывайте информацию о строке в выравнивании или метаданных
Данные — это индекс, и системный ввод-вывод можно значительно сократить, если проверять только один столбец.
Однотипные данные вместе, легко сжимаемые
HBase хранится в столбцах, используя метаданные для записи информации о строках.
структура данных
Структура данных является реальной организацией данных, которая является реальной структурой логического уровня.
Одна и та же структура данных может реализовать разные идеи.Ниже приведен пример B-Tree.
B-Tree
перевернутый
Если каждый внутренний узел дерева B хранит определенное значение, а листовой узел хранит идентификатор, то это инверсия.
На самом деле существует множество поисковых систем, которые ранжируются таким образом.
положительный ряд
Если внутренний узел хранит идентификатор, и узел листьев хранит содержимое, это положительный ряд
Реальная сцена, индекс pk mysql хранится так
хранилище строк
Если листовой узел B-дерева в положительной строке хранит значение строки, то это хранилище строки, в противном случае, если это значение столбца, это хранилище столбца.
структура хранения
Структура хранения — это то, как данные фактически размещаются на диске, и это реальная структура на физическом уровне.
Существуют разные структуры хранения в соответствии с различными структурами данных.
Как правило, B-Tree — это место, где размещается индексный файл, а HashTable может храниться в хэше.
В настоящее время в основном структура индекса размещения заказов, конкретная реализация различных продуктов не то же самое.
Например, VSAM от IBM — это формат файла для хранения B-деревьев, который состоит из трех частей: набора индексов, набора последовательностей и набора данных.
Хранение и инверсия столбцов
Вернемся к вопросу в начале: какова связь между хранением в столбцах и инверсией?
Хранилище столбцов — это идея хранения прямой строки, и она не имеет ничего общего с инвертированными строками.
Как правило, поскольку сортировка поисковых систем основана на нескольких столбцах, общие поисковые системы используют инвертированные строки для точных запросов и хранилище столбцов для сравнительных вычислений.