После неудачного несчастного случая с MySQL я, наконец, отказался от его использования.
Что у меня есть?
Большой набор файлов в следующем формате:
ID1: String String String String
ID2: String String String String
ID3: String String String String
ID4: String String String String
Что я сделал?
Использовал MySQL на мощной машине для импорта всего в базу данных в следующем виде:
ID1 String
ID1 String
ID1 String
ID1 String
...
...
Что случилось?
Импорт базы данныхБыл успешен.Индексирование не выполняется, поскольку очевидно, что для 2 миллиардов записей требуется более 200 ГБ.Разумный запрос, но у меня просто не так много места, потому что сама таблица после нормализации занимает около 240 ГБ.
Что я планирую сделать?
Iиметь кластер из 20 узлов с доступом около 80 ГБ для всех вместе взятых (все они имеют монтирование NFS).Я настраиваю узлы для распределенных вычислений, используя Parallel Python .Я планирую переписать свою логику, чтобы использовать мощность кластера.
Мой вопрос:
Мне нужно выполнить множество следующих типов поиска:
Какие идентификаторы содержат данную строку?
Например, если дана произвольная строка: «String1», мне нужно знать, что говорят, что «ID1, ID2234» содержат ее.
На данный момент мне известны два метода:
- Использование вызова python grep
- Каждый из 20 узлов получает контроль над набором файлов и по запросудля поиска, ищет связанные с ними файлы.
Может кто-нибудь предложить хороший подход для ускорения этой неэффективной в противном случае задачи?