2013-12-14 3 views
1

У меня есть огромный уникальный список строк (1.000.000.000+ строк). Мне нужно знать, существует ли строка в этом списке или нет. Каков самый быстрый способ сделать это?Самый быстрый механизм базы данных для хранения огромного списка строк

Я думаю, мне нужен очень простой движок базы данных с индексом Btree, который позволяет мне быстро просматривать ... и MySQL может быть слишком медленным и сложным для этого.

+0

Если вам нужно сделать это только один раз для определенной строки, вы должны использовать grep :-) – user152468

ответ

2

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

+0

Это. То, что действительно нужно OP, - это трюк, а не полное решение для РСУБД или NoSQL. – DaSourcerer

+0

Знаете ли вы о параллельных реализациях таких структур? С десятками гигабайт строк я полагаю, что параллелизм был бы выгодой. –

+0

@GordonLinoff Зависит от того, что вы хотите распараллелить. Тривиально запускать несколько запросов только для чтения параллельно. Конструкция должна быть легко распараллелизирована: на каждом уровне вы ведите строки в соответствии со следующей буквой, а затем строите для каждого ведра самостоятельно. Кажется, что невозможно распараллеливать части одного поиска, но поскольку поиск trie - это O (длина строки), это кажется не относящимся к проблеме. – delnan

Смежные вопросы