Как стать автором
Обновить

Комментарии 15

А к графовым — DGraph

Спасибо за дополнение.

Да, согласен, тоже интересная СУБД - особенно интересно было почитать реальные use cases у них на сайте.

СтОит добавить в таблицу.

Спасибо за комментарий!

Почитал про 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 имеется модуль для работы с графовыми данными.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории