После публикации статьи “Какую СУБД выбрать и почему? (Статья 1)” ко мне поступили справедливые комментарии о том, что я не упомянул такие типы СУБД, как Time Series и Spatial. В этой статье я кратко опишу их и добавлю еще два типа — Search engines и Object-oriented (объектные).
Напомню, в предыдущей статье мы описали:
Данные хранятся с отметками времени (это ключевое), которые индексируются и записываются таким образом, чтобы можно было запрашивать данные этих временных рядов намного быстрее, чем при использовании классической реляционной базы данных.
Наиболее известные СУБД такого типа: InfluxDB, Kdb+, Prometheus, TimescaleDB, QuestDB, AWS Timestream, OpenTSDB, GridDB.
Яркие представители этого типа СУБД: MongoDB Realm, InterSystems Caché, ObjectStore, Actian NoSQL DB, Objectivity/DB.
Известные СУБД данного типа: Apache Solr, Elasticsearch, Splunk.
Известные представители этого типа СУБД: Oracle Spatial, Microsoft SQL, PostGIS, SpatialLite.
Напомню, в предыдущей статье мы описали:
- Реляционные
- Ключ-значение
- Документные
- Графовые
- Колоночные
- Time Series
- Spatial
- Search engines
- Object-oriented (объектные)
Time Series СУБД
Такие СУБД оптимизированы для хранения данных временных меток или временных рядов. Данные временных рядов могут содержать измерения или события, которые отслеживаются, собираются или объединяются в течение определенного периода времени. Это могут быть данные, собранные с датчиков отслеживания движения, метрики JVM из приложений Java, рыночные торговые данные, сетевые данные, ответы API, время безотказной работы процессов и т.д.Данные хранятся с отметками времени (это ключевое), которые индексируются и записываются таким образом, чтобы можно было запрашивать данные этих временных рядов намного быстрее, чем при использовании классической реляционной базы данных.
Наиболее известные СУБД такого типа: InfluxDB, Kdb+, Prometheus, TimescaleDB, QuestDB, AWS Timestream, OpenTSDB, GridDB.
Когда выбирать Time series СУБД
Основная область применения таких СУБД — это системы мониторинга, сбора телеметрии и финансовые системы.Когда не выбирать Time series СУБД
Желательно воздержаться от применения такой СУБД для задач, не связанных с временными рядами и временными метками.Объектные СУБД (Object-oriented)
Как следует из названия, такие СУБД оптимизированы под хранение и работу с объектами. Как и полагается в ООП, у таких объектов в СУБД также имеются свойства и методы. Так же в них реализованы инкапсуляция и полиморфизм. Основная цель использования объектных СУБД — избавить разработчиков, применяющих объектную модель программирования, от необходимости трансформировать объекты в таблицы, строки и их связи, и обратно.Яркие представители этого типа СУБД: MongoDB Realm, InterSystems Caché, ObjectStore, Actian NoSQL DB, Objectivity/DB.
Когда выбирать объектные СУБД
Честно говоря, я видел не так много успешных реализаций с использованием объектных СУБД. Тем не менее, объектные базы данных обычно рекомендованы для тех случаев, когда требуется высокопроизводительная обработка данных, имеющих сложную структуру, при этом разработка ведется с использованием языков объектно-ориентированного программирования.Когда не выбирать объектные СУБД
Не выбирайте объектную СУБД, если вы планируете использовать классический язык SQL, если вы не используете ООП или если вы планируете в дальнейшем мигрировать с данной СУБД на другие. Если нет хорошего понимания ООП, в большинстве случаев лучше выбрать документо-ориентированные СУБД.Search engine СУБД
Такой тип СУБД используется для организации полнотекстового поиска. Причем поиск может производиться по различным данным — это например, данные из других БД, e-mail, RSS-feed, текст, JSON, XML, CSV, и даже по документам PDF и MS Office. У Search engine СУБД свои оптимизированные подходы к индексированию данных. В том числе используются так называемые инвертированные индексы, для того, чтобы предоставлять практически real-time поиск. В разных СУБД данного типа могут использоваться свои языки запросов, отличающихся друг от друга.Известные СУБД данного типа: Apache Solr, Elasticsearch, Splunk.
Когда выбирать Search engine СУБД
Подходят для организации быстрого полнотекстового поиска по различным источникам данных, как по структурированным, так и по слабо структурированным. Яркий пример — системы сбора логов и поиска по ним.Когда не выбирать Search engine СУБД
Если поиск производится по ограниченному количеству полей структурированных данных.Spatial СУБД
Этот тип СУБД оптимизирован и предназначен для работы с объектами определенными в геометрическом пространстве. Это могут быть простые объекты (точки, линии, многоугольники) или сложные (3D-объекты, топологические покрытия, линейные сети). В таких СУБД реализован набор специальных функций, позволяющих проводить с объектами операции создания, трансформации, измерения (расстояния, площади, объема), вычисления (пересечений \ соприкосновений) и выборки по определенным критериям. В таких СУБД существуют специальные индексы, оптимизирующие работу с объектами, и специальный стандартизированный SQL/MM язык.Известные представители этого типа СУБД: Oracle Spatial, Microsoft SQL, PostGIS, SpatialLite.
Когда выбирать Spatial СУБД
Если строите GIS-решения. Если планируете не просто хранить, но и работать с геометрическими объектами на уровне СУБД.Когда не выбирать Spatial СУБД
Если планируете просто хранить геометрические объекты в виде координат.Заключение
Мы пополнили наш перечень типов СУБД еще четырьмя: Time series, Object-oriented, Search engines и Spatial. Это все еще не полный перечень, и в одной из следующих статей мы продолжим. Отдельно рассмотрим несколько крупных вендоров, которые предлагают сразу множество типов СУБД.№ | Тип СУБД | Когда выбирать | Популярные СУБД данного типа |
1 | Реляционные | Нужна транзакционность; высокая нормализация; большая доля операций на вставку | Oracle, MySQL, Microsoft SQL Server, PostgreSQL, IBM DB2, SQLite |
2 | Ключ-значение | Задачи кэширования и брокеры сообщений | Redis, Memcached, etcd |
3 | Документные | Для хранения объектов в одной сущности, но с разной структурой; хранение структур на основе JSON | Couchbase, MongoDB, Amazon DocumentDB |
4 | Графовые | Задачи подобные социальным сетям; системы оценок и рекомендаций | Neo4j, Amazon Neptune, InfiniteGraph, TigerGraph |
5 | Колоночные | Хранилища данных; выборки со сложными аналитическими вычислениями; количество строк в таблице превышает сотни миллионов | Vertica, ClickHouse, Google BigQuery, Sybase \ SAP IQ, InfoBright |
6 | Time series | Системы мониторинга, сбора телеметрии, и финансовые системы, с привязкой к временным меткам или временным рядам | InfluxDB, Kdb+, Prometheus, TimescaleDB, QuestDB, AWS Timestream, OpenTSDB, GridDB |
7 | Объектные | Высокопроизводительная обработка данных, имеющих сложную структуру, с использованием языков объектно ориентированного программирования | MongoDB Realm, InterSystems Caché, ObjectStore, Actian NoSQL DB, Objectivity/DB |
8 | Search engine | Системы полнотекстового поиска | Apache Solr, Elasticsearch, Splunk |
9 | Spatial | GIS-решения, работа с геометрическими объектами | Oracle Spatial, Microsoft SQL, PostGIS, SpatialLite |
Какую СУБД выбрать и почему? (Статья 2)
После публикации статьи “ Какую СУБД выбрать и почему? (Статья 1) ” ко мне поступили справедливые комментарии о том, что я не упомянул такие типы СУБД, как Time Series и Spatial. В этой статье я...
habr.com