Комментарии 15
Я бы к списку популярных TSDB добавил бы еще VictoriaMetrics.
Интересно услышать ваше мнение какую базу применить как писал человек выше?
Отношение "Post - Likes"
Кол-во: десятки миллионов записей для 1 поста у популярных людей
Множество запросов: "лайкнул ли User1 Post2 ?"
Приветствую!
Прошу прощения, что не ответил сразу.
Конечно сложно сказать не глядя в архитектуру решения, на сколько комплексная задача, сколько сущностей и какие между ними связи.
Если я правильно понимаю, то вводные такие:
1. Есть три сущности - Люди, Посты, Лайки.
2. Самая крупная таблица (десятки миллионов записей на 1 пост) - Лайки, в которой есть ссылка на таблицы Люди, и Посты.
3. В таблицу Лайки производятся вставки. Удалений нет, изменений нет.
4. Поддерживать транзакционность необязательно
Из этих вводных вполне подходит классическая реляционная база данных.
В качестве эксперимента, я создал минимально-возможную в AWS конфигурацию
Serverless Aurora MySQL, создал в ней три сущности с индексами и foreign keys. Заполнил таблицы примерно по 20 млн строк, и выполнил запросы - отрабатывает моментально.
При этом никакой магии с партициями или запросами, все стандартно.
Итого, я бы рекомендовал использовать все таки реляционную СУБД.
В заключение я бы добавил общий тренд, что люди не любят делить данные на много баз данных, и поэтому идет интеграция разных подходов. Базы данных добавляют разную функциональность, чтобы позволить хранить и обрабатывать все вместе.
Скажем, насчет Spatial - все больше аналитики требует работы с географией, поэтому ее все добавляют понемногу. Google BigQuery пару лет назад поддержал Spatial, и стал видимо наиболее масштабируемой на текущий момент аналитической базой данных для больших пространственных данных. Сейчас то же сделал Snowflake, расширили поддержку RedShift и Athena.
Пожалуй только транзакционные и аналитические базы данных пока разделены прорвой, но и там SingleStore (бывший MemSQL) пытается продавать интегрированное решение.
Из поисковых баз данных люди весьма активно используют sphinx, он гораздо быстрее чем эластик, хотя и менее удобен в настройке и менее функционален. "Гораздо" это как минимум в несколько раз, а иногда и в 10. В общем круто быстрее.
Жду статью№3, где будет объяснено что из этих трёх выбрать: оракл, постгрес, или мария дб
из этих трех надо выбирать мсскл (нет)
То, что вы перечислили, платформы одного класса, которые решают одни и те же задачи. Поэтому выбор тут исключительно по нефункциональным требованиям – стоимость, производительность, отказоустойчивость. Если высокая интенсивность обновлений и/или высокие требования к отказоустойчивости, то Oracle или PostgreSQL. Oracle существенно дороже, но и возможности вертикального масштабирования у него гораздо больше. Плюс Oracle может конкурировать и в нише аналитических БД с такими платформами как Greenplum, Teradata, Netezza (которая puredataforanalytics), MS PDW. Если один пишет, а многие читают, то тут какой-то из клонов MySQL – мария, перкона, сам мускл...
Спасибо за комментарий!
Вопрос не тривиальный, многое зависит от конкретной задач и ограничений.
Если есть чуть больше вводных, можем обсудить.
Помимо упомянутых критериев есть прочие:
горизонтальное масштабирование
in-memory
особенности реализации CAP
и т.д.
Кстати, в MS SQL 2019 имеется модуль для работы с графовыми данными.
Какую СУБД выбрать и почему? (Статья 2)