Какой движок базы данных для большого набора данных
Я работаю над аналитическим заданием, мы получили частичный набор данных из университетской библиотеки, содержащий почти 300 000 000 строк.
Каждый ряд содержит:
- Я БЫ
- Дата
- владелец
- Крайний срок
- Проверить дату
- Checkin_date
Я положил все это в таблицу MySQL, а затем начал запрашивать это для моего анализа анализа, однако простой запрос (SELECT * FROM table WHERE ID = something
) где требуется 9-10 минут для завершения. Поэтому я создал индекс для всех столбцов, что сделало его заметным быстрее ~ 30 сек.
Поэтому я начал читать похожие проблемы, и люди рекомендовали переключиться на "Широкое хранилище столбцов" или "Поисковая система" вместо "Реляционный".
Поэтому мой вопрос: какой механизм базы данных лучше всего использовать для этих данных?
2 ответа
Ответ, конечно, "это зависит". В вашем примере вы подсчитываете количество записей в базе данных с заданным идентификатором. Мне трудно поверить, что в MySQL это займет 30 секунд, если только вы не используете какой-нибудь вялый ноутбук.
MySQL работает на невероятном количестве систем, потому что он полнофункциональный, стабильный и имеет довольно хорошую производительность. Это плохо (или было плохо) в некоторых вещах, таких как текстовый поиск, кластеризация и т. Д.
Такие системы, как Elasticsearch, хороши с текстами, но могут не подходить для вашей системы, в зависимости от использования. Из вашей схемы у вас есть одно текстовое поле ("владелец"), и вам не понадобятся возможности поиска текста Elasticsearch в таком поле (кому когда-либо нужно было вводить имя пользователя?). Elasticsearch также широко используется для файлов журналов, которые также не нуждаются в текстовом движке. Это, однако, хорошо с блоками текста и с кластеризацией.
Если это назначение класса, я бы придерживался MySQL.
Использование поисковой системы для поиска является ИМО лучшим вариантом.
Elasticsearch конечно!
Отказ от ответственности: я работаю на резинке.:)