Пока ковырялся с альтернативами, Монго допилил индекс в 1 поток.
Что интересно, похоже Постгрес на задаче bulk-вставки можно быстрее Монги разогнать. Но это не 100%, т.к. я не учитываю время создания csv. И не тестил как несколько copy одновременно будут работать.
Строго говоря, я после 1.5 дней мучений просто плюнул на конвертирование моих данных в CSV, т.к.
email это "^[a-zA-Z0-9_!#$%&’*+/=?{|}~^-]+(?:\\.[a-zA-Z0-9_!#$%&’*+/=?{|}~^-]+)*@[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)*$"
а пароль - практически любой символ
Слон упорно отказывался жевать csv-шки, то слэш ему не нравится, то ещё что-то.
Монга просто на порядок удобнее для программиста.
Пакет на вставку - обычный массив, пока его не отправили в Монгу, можно менять как хочешь (это уже для отсеивания дублей).
Nurbol Suleimenov, молча терять неизвестную часть данных не вариант, гружу с ACKNOWLEDGED.
За ссылку спасибо, журнал, действительно, можно совсем выключить, забыл про это.
В остальном пока успел проверить только основную версию и опять фэйл - скопировал данные в облака с относительно быстрым SSD и сервером 72core/144GB. Без индекса скорость вставки намного больше миллиона записей в сек. 2 терабайта залилось меньше, чем за сутки. Заканчиваешь импорт и начинаешь создавать индекс и опять дно...отредактировал. Создание индексов в монго однопоточное. Узкое место скорость 1 ядра CPU. За 15 часов 5% сделало.
Роман Мирр, у меня нет проблем с реляционными СУБД, но у реляционных СУБД есть проблемы со скоростью. Если бы у рСУБД не было таких проблем, мы бы не наблюдали такого расцвета NOSQL как сейчас.
Но у NOSQL упор на распределенность...
У "улучшенных" Слонов (Цитрус, ПГ-XL итд) кстати, тоже.
Проверил свой email у них. То, как завуалированно показывают результат они и как можно выводить реальные фрагменты из текстовых файлов - это две большие разницы.
Задача загрузить малоструктурированные данные всяких утечек паролей и прочих (гуляющих по инету с января этого года) как это делает haveibeenpwned.com и проверить нашу организацию.
80-90% это email + password. Соответственно: Три токена: user, domain, email. К нему password. Ну и на самом деле ещё номер файла-источника. Я его одним Integer-ом обозначаю. оставшееся 10-20% всякое разное. Оно идёт в Lucene в 12 потоков. Эластик намного медленнее на том же железе.
Данные меняться не будут. Догружаться потом тоже редко.
Но хотелось бы это всё сделать не за месяц, а быстрее.
Nurbol, спасибо за ответ. Ещё поперевариваю его, но кажется это всё немного не про нас. Стоит задача просто загрузить 2-3 терабайта данных за чем меньше дней, тем лучше и организовать по ним поиск. Догружать потом особо не будет.
Пока основная версия - в облачных сервисах взять инстанс с супербыстрым СХД и собрать базу там, потом скопировать к себе, у себя только поиск делать.
sim3x, Слона особо даже не рассматриваю, хотя из реляционных СУБД, с ним работал больше всего. К бенчмаркам где реляционные СУБД побеждают Монго на CRUD отношусь как к прохладным былинам и впариванию.
Я даже сомневаюсь, что Оракловый direct path справится с задачей на моем железе
Что сходу не нравится в вашей ссылке:
No constraints, no indexes.
i7-4790K and an Intel 750 SSD
Какой-то сферический конь в вакууме.
У монги на старте больше 200к/сек без индексов. И 100к/с с 3 индексами.
Роман Мирр, Конечно четкий поиск потом тоже должен быть адекватным по скорости.
Фишки FTS (нечеткий, перестановки, близость слов) не нужны.
Как понимаю, объем индексов будет гигабайт 300-400. При объеме ОЗУ в разы меньше и обычных дисках с не фантастической скоростью. Интересно, задача вообще решаема?
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.
Пока ковырялся с альтернативами, Монго допилил индекс в 1 поток.
Что интересно, похоже Постгрес на задаче bulk-вставки можно быстрее Монги разогнать. Но это не 100%, т.к. я не учитываю время создания csv. И не тестил как несколько copy одновременно будут работать.
Строго говоря, я после 1.5 дней мучений просто плюнул на конвертирование моих данных в CSV, т.к.
email это "^[a-zA-Z0-9_!#$%&’*+/=?{|}~^-]+(?:\\.[a-zA-Z0-9_!#$%&’*+/=?{|}~^-]+)*@[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)*$"
а пароль - практически любой символ
Слон упорно отказывался жевать csv-шки, то слэш ему не нравится, то ещё что-то.
Монга просто на порядок удобнее для программиста.
Пакет на вставку - обычный массив, пока его не отправили в Монгу, можно менять как хочешь (это уже для отсеивания дублей).