Каков наилучший способ создания индекса, чтобы получить самый быстрый ответ на чтение? - PullRequest
1 голос
/ 16 сентября 2008

Мне нужно проиндексировать до 500 000 записей для быстрого чтения. Индекс необходимо периодически перестраивать на диске. Я пытаюсь выбрать между простым файлом, таким как хэш на диске, или одной таблицей во встроенной базе данных. У меня нет необходимости в RDBMS-движке.

Ответы [ 7 ]

1 голос
/ 16 сентября 2008

cdb , если данные не изменяются.

/ Allan

1 голос
/ 16 сентября 2008

PyTables Pro утверждает, что «для ситуаций, которые не требуют быстрого обновления или удаления, OPSI, вероятно, является одним из лучших доступных механизмов индексирования». Однако я лично не использовал его, но версия PyTables для F / OSS уже дает вам хорошую производительность:

http://www.pytables.org/moin/PyTablesPro

1 голос
/ 16 сентября 2008

Если вы храните объекты состояния по ключу, как насчет Berkeley DB .

1 голос
/ 16 сентября 2008

Возможно BDB ? Это высокое качество. база данных, которая не использует СУБД.

1 голос
/ 16 сентября 2008

Я предполагаю, что вы имеете в виду таблицы индексации в реляционной СУБД (например, mySql, Oracle или Postgres).

Индексы - это вторичные хранилища данных, которые ведут запись подмножества полей для таблицы в определенном порядке.

Если вы создадите индекс, любой запрос, включающий подмножество полей, проиндексированных в предложении WHERE, будет выполняться быстрее.

Однако добавление индексов снизит производительность INSERT.

Как правило, индексы не нужно перестраивать, если они не повреждены. Они должны поддерживаться вашей СУБД на лету.

0 голосов
/ 16 сентября 2008

Если данные не должны быть полностью обновленными, вам также может понадобиться использовать инструмент хранилища данных для целей OLAP (например, MSOLAP ). Может молниеносно выполнять запросы только для чтения на основе предварительно рассчитанных данных.

0 голосов
/ 16 сентября 2008

Это то, для чего MapReduce был изобретен. Hadoop - классная реализация Java.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...