Часто, в обзорах видов баз данных упоминают реляционные и “другие”, “NoSQL” и т.д., либо приводят самые основные типы СУБД (базы данных), забывая о редких. В данной статье я постараюсь описать максимально полно виды баз данных и привести примеры конкретных реализаций. Разумеется, статья не претендует на всеохватность и классифицировать базы данных можно по разному, в том числе по типам оптимальной нагрузки и т.д., и все виды баз данных будут рассмотрены очень кратко. Но надеюсь, статья даст базовое представление о видах СУБД и принципах их работы.
В статье мы рассмотрим следующие типы баз данных:
Реляционные
Ключ-значение
Документо-ориентированные
Базы данных временных рядов
Графовые базы данных
Поисковые базы данных (Search Engines)
Объектно-ориентированные базы данных
RDF (Resource Description Framework)
Wide Column Stores
Мультимодальные СУБД
Native XML СУБД
GEO/GIS (пространственные) и специализированные СУБД
Event СУБД (баз данных переходов состояний)
Контентные СУБД
Навигационные (Navigational) СУБД
Векторные базы данных
Начнем с самого распространенного типа - реляционных СУБД.
Реляционные базы данных
Наиболее известными реляционными базами данных являются Open Source проекты PostgreSQL, MySQL и SQLite, а также проприетарные решения Oracle, Microsoft SQL Server и IBM Db2Relational.
Суть реляционных баз в хранении данных в связанных таблицах.
![Пример хранения данных в реляционной СУБД Пример хранения данных в реляционной СУБД](https://habrastorage.org/getpro/habr/upload_files/cf0/921/ae7/cf0921ae7b9b2a21098524b231b2bea6.png)
Стоит заметить, что реляционные базы бывают с хранением данных по строкам (PostgreSQL) и по столбцам/колонкам (ClickHouse, Vertica). Колоночные/столбцовые базы лучше подходят для аналитики, в то время как ориентация на строки лучше подходит для транзакционных нагрузок.
![Отличие колоночных/столбцовых СУБД от строковых Отличие колоночных/столбцовых СУБД от строковых](https://habrastorage.org/getpro/habr/upload_files/1ea/3aa/737/1ea3aa73766de4bc87db5720ddbdacb2.png)
Реляционные СУБД - самый распространенный тип баз данных. В подкате таблица из более чем 150 вариантов. Источником данного списка является данный сайт-агрегатор информации по базам данных.
Список реляционных баз данных (и инструментов, содержащих функционал, присущий базам данных, таких как SQL-движки и т.д.) и поддерживаемый тип данных.
Полный список из 166 реляционных СУБД
Oracle - реляционная, мультимодальная
MySQL - реляционная, мультимодальная
Microsoft SQL Server -реляционная, мультимодальная
PostgreSQL - реляционная, мультимодальная
IBM Db2Relational - мультимодальная
Microsoft Access - реляционная
SQLite - реляционная
Snowflake - реляционная
MariaDB - реляционная, мультимодальная
Microsoft Azure SQL Database - реляционная, мультимодальная
Hive - реляционная
Databricks - мультимодальная
Teradata - реляционная, мультимодальная
Google BigQuery - реляционная
FileMaker - реляционная
SAP HANA - реляционная, мультимодальная
SAP Adaptive Server - реляционная
Microsoft Azure Synapse Analytics - реляционная
Firebird - реляционная
Informix - реляционная, мультимодальная
Amazon Redshift - реляционная
Impala - реляционная, мультимодальная
Spark SQL - реляционная
ClickHouse - реляционная, мультимодальная
Netezza - реляционная
Vertica - реляционная
Presto - реляционная
dBASE - реляционная
Apache Flink - реляционная
Greenplum - реляционная, мультимодальная
Amazon Aurora - реляционная, мультимодальная
H2 - реляционная, мультимодальная
Oracle Essbase - реляционная
Microsoft Azure Data Explorer - реляционная, мультимодальная
Microsoft Azure Data Explorer - реляционная, мультимодальная
CockroachDB - реляционная
Derby - реляционная
Interbase - реляционная
Trino - реляционная, мультимодальная
SingleStore - реляционная, мультимодальная
SAP SQL Anywhere - реляционная
Ingres - реляционная
HyperSQL - реляционная
Ignite - мультимодальная
SAP IQ - реляционная
Virtuoso - мультимодальная
OpenEdge - реляционная
Oracle NoSQL - мультимодальная
Google Cloud Spanner - реляционная
YugabyteDB - реляционная, мультимодальная
MaxDB - реляционная
TiDB - реляционная, мультимодальная
Apache Druid - мультимодальная
InterSystems Caché - мультимодальная
InterSystems IRIS - мультимодальная
DuckDB - реляционная
SAP Advantage Database Server - реляционная
HEAVY.AI - реляционная, мультимодальная
4D - реляционная
Percona Server for MySQL - реляционная
EDB Postgres - реляционная
Apache Drill - мультимодальная
EXASOL - реляционная
Apache Phoenix - реляционная
Citus - реляционная, мультимодальная
Datomic - реляционная
Empress - реляционная
GridGain - мультимодальная
OceanBase - реляционная, мультимодальная
MonetDB - реляционная, мультимодальная
VoltDB - реляционная
Tibero - реляционная
TimesTen - реляционная
IBM Db2 warehouse - реляционная
SQLBase - реляционная
Firebolt - реляционная
Fauna - мультимодальная
mSQL - реляционная
MatrixOne - реляционная
DataEase - реляционная
Oracle Rdb - реляционная
Altibase - реляционная
PlanetScale - реляционная, мультимодальная
NonStop SQL - реляционная
Cubrid - реляционная
Infobright - реляционная
Apache Kylin - реляционная
GBase - реляционная
Apache HAWQ - реляционная
NuoDB - реляционная
Dolt - реляционная, мультимодальная
solidDB - реляционная
FoundationDB - мультимодальная
1010data - реляционная
openGauss - реляционная, мультимодальная
HFSQL - реляционная
Actian Vector - реляционная
SQL.JS - реляционная
OpenBase - реляционная
Vitess - реляционная, мультимодальная
Kognitio - реляционная
StarRocks - реляционная
TDSQL for MySQL - реляционная, мультимодальная
DBISAM - реляционная
FrontBase - реляционная
TypeDB - мультимодальная
NexusDB - реляционная
Datacom/DB - реляционная
Kinetica - реляционная, мультимодальная
eXtremeDB - мультимодальная
ScaleArc - реляционная
VistaDB - реляционная
Yellowbrick - реляционная
Splice Machine - реляционная
Postgres-XL - реляционная, мультимодальная
Alibaba Cloud MaxCompute - реляционная
AlaSQL - мультимодальная
Apache Pinot - реляционная
Alibaba Cloud AnalyticDB for MySQL - реляционная, мультимодальная
SQream DB - реляционная
Sequoiadb - мультимодальная
Kingbase - реляционная, мультимодальная
Trafodion - реляционная
R:BASE - реляционная
Apache Doris - реляционная
Transbase - реляционная
Lovefield - реляционная
Raima Database Manager - мультимодальная
Alibaba Cloud AnalyticDB for PostgreSQL - реляционная
Tajo - реляционная
Mimer SQL - реляционная
Kyligence Enterprise - реляционная
YDB - мультимодальная
Databend - реляционная
Actian PSQL - реляционная
Alibaba Cloud ApsaraDB for PolarDB - реляционная
Brytlyt - реляционная
XtremeData - реляционная
TransLattice - реляционная
ElevateDB - реляционная
Comdb2 - реляционная
Linter - реляционная, мультимодальная
AntDB - реляционная
FeatureBase - реляционная
LeanXcale - Multi-model
PipelineDB - реляционная
GeoSpock - реляционная, мультимодальная
Faircom DB - мультимодальная
Tibco ComputeDB - реляционная
Valentina Server - реляционная
PieCloudDB - реляционная
BigObject - реляционная
Edge Intelligence - реляционная
Fujitsu Enterprise Postgres - реляционная, мультимодальна
EsgynDB - реляционная
Transwarp KunDB - реляционная
JethroData - реляционная
MyScale - мультимодальная
OushuDB - реляционная
AgensGraph - мультимодальная
SmallSQL - реляционная
ActorDB - реляционная
DaggerDB - реляционная
EdgelessDB - реляционная
K-DB - реляционная
Sadas Engine - реляционная
Из отечественных игроков можно выделить
Postgres Pro - доработанный под корпоративные задачи PostgreSQL.
Jatoba - как и вариант выше, основана на PostgreSQL.
Квант-Гибрид - еще один вариант PostgreSQL.
Ред - СУБД на базе Interbase/Firebird
ProximaBD - на основе PostgreSQL.
Arenadata DB - корпоративное решение на основе Greenplum
YDB - serverless решение от Яндекса. Это Open Source продукт, который доступен в том числе как для on-premise инсталляций, так и как управляемый сервис с dedicated/serverless моделью потребления.
Вы можете развернуть высокодоступные кластеры реляционных баз данных PostgreSQL и MySQL в облаке Amvera Cloud "одной кнопкой". Amvera позволяет развернуть кластер из нескольких реплик с встроенными бэкапами. Стоимость хостинга баз данных начинается от 170 руб. в месяц.
Реляционные базы закрывают широкий спектр задач, начиная от транзакционных баз и заканчивая аналитическими, но не являются “серебряной пулей” для всех задач. Рассмотрим другие виды базы данных.
Key-value (ключ значение) базы данных
Тип баз данных Key-value предназначен для осуществления быстрых, почти мгновенных запросов для таких задач как кэш, отображение баланса и т.д.. Высокая скорость осуществляется за счет хранения данных по принципу ключ-значение, и в большинстве случаев благодаря работе в оперативной памяти.
![Принцип Key-Value Принцип Key-Value](https://habrastorage.org/getpro/habr/upload_files/eba/8a2/823/eba8a2823a31ed22d5756c53d9676d9d.png)
Словари содержат коллекцию объектов или записей, а объекты содержат множество различных полей, каждое из которых содержит данные. Записи хранятся и извлекаются с использованием ключа, который однозначно идентифицирует запись и используется для быстрого поиска данных.
Основным применением является ускорение отображения данных для конечных пользователей и снижение нагрузок, в том числе I/O на инфраструктуру организаций.
Наиболее известными и широко используемыми Key-Value решениями являются Redis и Memcached.
Полный список из 72 Key-Value СУБД под катом
Redis - Key-value, мультимодальная
Amazon DynamoDB - мультимодальная
Microsoft Azure Cosmos DB - мультимодальная
Memcached - Key-value
etcd - Key-value
Hazelcast - Key-value, мультимодальная
Aerospike - мультимодальная
Ehcache - Key-value
Riak KV - Key-value
Ignite - мультимодальная
OrientDB - мультимодальная
Google Cloud Bigtable - мультимодальная
GemFire - Key-value, мультимодальная
ArangoDB - мультимодальная
Infinispan - Key-value
Oracle NoSQL - мультимодальная
RocksDB Key-value
Oracle Berkeley DB - мультимодальная
InterSystems Caché - мультимодальная
InterSystems IRIS - мультимодальная
LevelDB - Key-value
LMDB - Key-value
Geode - Key-value
Amazon SimpleDB - Key-value
Geode - Key-value
Amazon SimpleDB - Key-value
Oracle Coherence - Key-value
GridGain - мультимодальная
Tarantool - Key-value, мультимодальная
GT.M - Key-value
ZODB - Key-value
FoudationDB - мультимодальная
NCache - Key-value
WebSphere eXtreme Scale - Key-value
Hibari - Key-value
MapDB - Key-value
BoltDB - Key-value
Graph Engine - мультимодальная
Scalaris - Key-value
KeyDB - Key-value
Project Voldemort - Key-value
Upscaledb - Key-value
Cloudflare Workers KV - Key-value
Elliptics - Key-value
Tokyo - Tyrant - Key-value
LeanXcale - мультимодальная
Immudb - Key-value, мультимодальная
STSdb - Key-value
TomP2P - Key-value
ArcadeDB - мультимодальная
Speedb Key-value
Faircom DB - мультимодальная
Kyoto Tycoon - Key-value
Skytable - Key-value
HyperLevelDB - Key-value
YTsaurus - мультимодальная
InfinityDB - Key-value
Tigris - мультимодальная
Badger - Key - value
Dragonfly - Key - value
LedisDB - Key-value
TerarkDB - Key-value
Cachelot.io - Key-value
ScaleOut StateServer - Key-value
JaguarDB - Key-value
Resin Cache - Key-value
Faircom EDGE - мультимодальная
SwayDB - Key-value
BergDB - Key-value
CortexDB - мультимодальная
Helium - Key-value
Tkrzw - Key-value
Из отечественных СУБД здесь следует отдельно выделить Tarantool, распространяемый под лицензией Упрощенная BSD и имеющий отдельную версию для крупных корпоративных клиентов. В Tarantool реализована гибридная схема данных: key-value, документно-ориентированная, реляционная и пространственная.
Вы можете развернуть Key-value базу данных Redis в облаке Amvera Cloud "одной кнопкой". Amvera позволяет развернуть кластер из нескольких реплик с встроенными бэкапами. Стоимость хостинга баз данных начинается от 170 руб. в месяц.
Документо-ориентированные базы данных
Если вам нужно хранить много файлов/документов и вы не хотите задумываться (до разумных пределов, разумеется) о структуре хранения, иерархии, связях, вам может подойти одна из документо-ориентированных баз данных. Дополнительным преимуществом являются широкие возможности для масштабирования.
![Принцип организации хранения документов в докумнто-ориентированной СУБД Принцип организации хранения документов в докумнто-ориентированной СУБД](https://habrastorage.org/getpro/habr/upload_files/4ab/bc5/7de/4abbc57deaaac38f82463dcff5a80cce.png)
Документо-ориентированные базы данных созданы для хранения иерархических структур данных (документов). Основой документоориентированных СУБД являются документные хранилища, имеющие структуру дерева или леса. Деревья начинаются с корневого узла и может содержать несколько внутренних и листовых узлов. Листовые узлы содержат данные, которые при добавлении документа заносятся в индексы, это дает возможность даже при достаточно сложной структуре находить путь к искомых данных. В отличие от хранилищ типа ключ-значение, выборка по запросу к документному хранилищу может содержать части большого количества документов без полной загрузки этих документов в оперативную память.
Наиболее популярной документо-ориентированной базой данных на текущий момент является MongoDB.
![Как хранятся данные в MongoDB Как хранятся данные в MongoDB](https://habrastorage.org/getpro/habr/upload_files/48b/0f0/d47/48b0f0d47a0165361428c5b94bdede97.png)
Полный список из 56 решений документо-ориентированных баз данных подкатом
1. MongoDB - Документо-ориентированная, мультимодальная
2. Amazon DynamoDB - мультимодальная
3. Databricks - мультимодальная
4. Microsoft Azure Cosmos DB - мультимодальная
5. Couchbase - Документо-ориентированная, мультимодальная
6. Firebase Realtime Database - Документо-ориентированная
7. CouchDB - Документо-ориентированная, мультимодальная
8. Google Cloud Firestore - Документо-ориентированная
9. MarkLogic - мультимодальная
10. Realm - Документо-ориентированная
11. Aerospike - мультимодальная
12. Google Cloud Datastore - Документо-ориентированная
13. Virtuoso - мультимодальная
14. OrientDB - мультимодальная
15. ArangoDB - мультимодальная
16. RavenDB - Документо-ориентированная, мультимодальная
17. Oracle NoSQL - мультимодальная
18. IBM Cloudant - Документо-ориентированная
19. RethinkDB - Документо-ориентированная, мультимодальная
20. InterSystems IRIS - мультимодальная
21. PouchDB - Документо-ориентированная
22. CloudKit - Документо-ориентированная
23. Apache Drill - мультимодальная
24. Amazon DocumentDB - Документо-ориентированная
25. Mnesia - Документо-ориентированная
26. LiteDB - Документо-ориентированная
27. Fauna - мультимодальная
28. Datameer - Документо-ориентированная
29. GigaSpaces - мультимодальная
30. FoundationDB - мультимодальная
31. AllegroGraph - мультимодальная
32. HPE Ezmeral Data Fabric - мультимодальная
33. CrateDB - мультимодальная
34. LokiJS - Документо-ориентированная
35. BigchainDB - Документо-ориентированная
36. AlaSQL - мультимодальная
37. SurrealDB - мультимодальная
38. Sequoiadb - мультимодальная
39. Percona Server for MongoDB - Документо-ориентированная
40. HarperDB - Документо-ориентированная
41. EJDB - Документо-ориентированная
42. YDB - мультимодальная
43. ArcadeDB - мультимодальная
44. Bangdb - мультимодальная
45. XTDB - Документо-ориентированная
46. YTsaurus - мультимодальная
47. OrigoDB - мультимодальная
48. WhiteDB - Документо-ориентированная
49. ToroDB - Документо-ориентированная
50. SenseiDB - Документо-ориентированная
51. Acebase - Документо-ориентированная
52. iBoxDB - Документо-ориентированная
53. RaptorDB - Документо-ориентированная
54. NosDB - Документо-ориентированная
55. CortexDB - мультимодальная
56. JasDB - Документо-ориентированная
Из отечественных решений, к документо-ориентированным базам данных можно отнести СУБД Енисей.
И в рамках одной из модальностей к таким базам можно отнести YDB и YTsaurus.
Вы можете развернуть документо-ориентированную базу данных MongoDB в облаке Amvera Cloud "одной кнопкой". Amvera позволяет развернуть кластер из нескольких реплик с встроенными бэкапами. Стоимость хостинга баз данных начинается от 170 руб. в месяц.
Базы данных временных рядов
Если у вас есть упорядоченные по времени данные с временными метками, такие как метрики от инфраструктуры или данные датчиков, может быть полезно использовать одну из баз данных временных рядов.
![Принцип хранения данных в базе данных временных рядов. Как мы видим, важной особенностью является наличие столбца соответствующего времени события. Принцип хранения данных в базе данных временных рядов. Как мы видим, важной особенностью является наличие столбца соответствующего времени события.](https://habrastorage.org/getpro/habr/upload_files/9d9/89d/390/9d989d3909a656c6956613bed71b233a.png)
Общие характеристики баз данных временных рядов:
Данные временных рядов всегда собираются на протяжении определенного периода времени.
Данные из рабочих нагрузок являются новыми и записываются как вставки. Уже существующие данные не обновляются путем замены.
Когда данные записываются, они автоматически назначаются последнему интервалу времени.
Базы даных временных рядов часто используются для осуществления мониторинга различных метрик (будь то загрузка CPU, или показатели работы какого-либо датчика).
![Когда вы смотрите в Grafana подобные графики, сама Grafana строит их на основе данных из СУБД временных рядов Prometheus. Когда вы смотрите в Grafana подобные графики, сама Grafana строит их на основе данных из СУБД временных рядов Prometheus.](https://habrastorage.org/getpro/habr/upload_files/980/b41/7c6/980b417c66dd5585adf10960d0e29e3b.png)
Наиболее популярными и базами временных рядов являются Prometheus, InflubDB, Graphite.
Полный список из 43 СУБД для хранения временных рядов
1. | InfluxDB | Time Series, мультимодальная |
2. | Kdb | мультимодальная |
3. | Prometheus | Time Series |
4. | Graphite | Time Series |
5. | TimescaleDB | Time Series, мультимодальная |
6. | DolphinDB | Time Series, мультимодальная |
7. | RRDtool | Time Series |
8. | Apache Druid | мультимодальная |
9. | TDengine | Time Series, мультимодальная |
10. | QuestDB | Time Series, мультимодальная |
11. | OpenTSDB | Time Series |
12. | GridDB | Time Series, мультимодальная |
13. | Fauna | мультимодальная |
14. | VictoriaMetrics | Time Series |
15. | Amazon Timestream | Time Series |
16. | M3DB | Time Series |
17. | Heroic | Time Series |
18. | eXtremeDB | мультимодальная |
19. | CrateDB | мультимодальная |
20. | Apache IoTDB | Time Series |
21. | KairosDB | Time Series |
22. | ITTIA | Time Series, мультимодальная |
23. | Raima Database Manager | мультимодальная |
24. | Axibase | Time Series |
25. | Riak TS | Time Series |
26. | Machbase | Time Series |
27. | CnosDB | Time Series |
28. | ArcadeDB | мультимодальная |
29. | Bangdb | мультимодальная |
30. | IRONdb | Time Series |
31. | Quasardb | Time Series |
32. | SiteWhere | Time Series |
33. | NSDb | Time Series |
34. | Alibaba Cloud TSDB | Time Series |
35. | IBM Db2 Event Store | мультимодальная |
36. | Tigris | мультимодальная |
37. | GreptimeDB | Time Series |
38. | Hawkular Metrics | Time Series |
39. | SiriDB | Time Series |
40. | Blueflood | Time Series |
41. | Warp 10 | Time Series |
42. | Yanza | Time Series |
43. | Newts | Time Series |
Графовые базы данных
А если вам нужно анализировать отношения данных, их связи или просто упростить запросы с километровыми Join, имеет смысл использовать графовые базы данных.
Данные и их связи представляются как вершины и ребра графа соответственно.
Таким способом можно легко представить денежные переводы (для определения различных мошеннических схем), связи в социальной сети и граф общения между операторами сотовой сети.
![Пример визуализации Графа Пример визуализации Графа](https://habrastorage.org/getpro/habr/upload_files/4c9/334/686/4c9334686cd0e1b643a944a73eea457c.png)
Чаще всего графовые базы данных используются в финансовой сфере для выявление различных мошеннических схем, но они будут удобны и для любой другой задачи, где нужно работать со связями объектов.
Наиболее известное Open Source решение, это Neo4J, но есть и ряд других качественных альтернатив.
Полный список из 39 графовых баз данных
1. | Neo4j | графовая |
2. | Microsoft Azure Cosmos DB | мультимодальная |
3. | Virtuoso | мультимодальная |
4. | OrientDB | мультимодальная |
5 . | ArangoDB | мультимодальная |
6. | Memgraph | графовая |
7. | GraphDB | мультимодальная |
8. | Amazon Neptune | мультимодальная |
9. | JanusGraph | графовая |
10. | Stardog | мультимодальная |
11. | NebulaGraph | графовая |
12. | TigerGraph | графовая |
13. | Fauna | мультимодальная |
14. | Giraph | графовая |
15. | Dgraph | графовая |
16. | AllegroGraph | мультимодальная |
17. | Blazegraph | мультимодальная |
18. | TypeDB | мультимодальная |
19. | Graph Engine | мультимодальная |
20. | SurrealDB | мультимодальная |
21. | InfiniteGraph | графовая |
22. | FlockDB | графовая |
23. | HyperGraphDB | графовая |
24. | Fluree | графовая |
25. | AnzoGraph DB | мультимодальная |
26. | Sparksee | графовая |
27. | HugeGraph | графовая |
28. | GraphBase | графовая |
29. | ArcadeDB | мультимодальная |
30. | Bangdb | мультимодальная |
31. | RDFox | мультимодальная |
32. | Ultipa | графовая |
33. | TinkerGraph | графовая |
34. | TerminusDB | графовая, мультимодальная |
35. | AgensGraph | мультимодальная |
36. | Galaxybase | графовая |
37. | VelocityDB | мультимодальная |
38. | HGraphDB | графовая |
39. | Transwarp StellarDB | графовая |
Но анализ графа можно выполнить и с использованием других типов баз данных, к примеру key-value, как описано с статье.
Поисковые базы данных (Search Engines)
Eсли вам необходимо осуществлять поиск большим объемам данных, особенно неструктурированным, как пример поиск по нескольким терабайтами логов, то вам может пригодиться использовать базу данных, совмещающую с функционалом хранения информации еще и функционал поиска по текстам.
Представим, что у вас есть N петабайт логов (или других текстовых данных). Обычный поиск по словам уже не подойдет, чтобы осуществить поиск и аналитику в разумное время.
На помощь приходит индексирование. Если очень утрировано его рассмотреть, можно его представить следующим способом. Каждому слову/лемме/n-грамме присвоим индекс и запишем эти индексы в специальную таблицу, где строки, это документ, а в столбики это индексы. Похожая система используется для построения систем поиска плагиата, правда там чаще применяют не слова, а шинглы (индексы с наслоением).
![Пример генерации шинглов для дальнейшего использования в поиске плагиата Пример генерации шинглов для дальнейшего использования в поиске плагиата](https://habrastorage.org/getpro/habr/upload_files/1aa/e11/413/1aae114138f2168d294993dbabaea97e.png)
А искать по индексу существенно быстрее, чем по совпадению по словам в документах.
Строго говоря, для поиска по документам можно использовать и эмбеддинги нейронных сетей, в которых закодирован "смысл" высказываний. Но для данной задачи лучше подойдут векторные базы данных, которые замыкают наш список.
Разумеется, современные поисковые СУБД предлагают значительно более широкий функционал.
Наиболее популярны такие решения как Elasticsearch (и его версия - OpenSearch), проприетарный Splunk, о котором я писал одну из прошлых статей и Sphinx.
Полный список из 25 поисковых СУБД
1. | Elasticsearch | Search engine, мультимодальная |
2. | Splunk | Search engine |
3. | Solr | Search engine, мультимодальная |
4. | OpenSearch | Search engine, мультимодальная |
5. | MarkLogic | мультимодальная |
6. | Algolia | Search engine |
7. | Microsoft Azure Search | Search engine |
8. | Sphinx | Search engine |
9. | Virtuoso | мультимодальная |
10. | ArangoDB | мультимодальная |
11. | Coveo | Search engine |
12. | Amazon CloudSearch | Search engine |
13. | Meilisearch | Search engine |
14. | Xapian | Search engine |
15. | SearchBlox | Search engine |
16. | Typesense | Search engine |
17. | Vespa | мультимодальная |
18. | Marqo | Search engine |
19. | Alibaba Cloud Log Service | Search engine |
20. | Manticore Search | Search engine, мультимодальная |
21. | Exorbyte | Search engine |
22. | Tigris | мультимодальная |
23. | Indica | Search engine |
24. | Rizhiyi | Search engine, мультимодальная |
25. | searchxml | мультимодальная |
Объектно-ориентированные базы данных
Объектно-ориентированные базы данных представляют собой базы данных, в где информация представлена в виде объектов, как в объектно-ориентированных языках программирования.
Объектно-ориентированные базы данных появились как способ нативной коммуникации кода написанного с использованием объектно-ориентированных языков с базой данных.
Объектно-ориентированные базы данных обладают следующими преимуществами:
Нет проблемы несоответствия модели данных в бд и приложении, так как в БД они сохраняются в том же виде.
Не нужно отдельно поддерживать модель данных на стороне базы данных.
Все объекты на уровне источника строго типизированы.
![Сравнение оъектно-ориентированной и реляционной СУБД Сравнение оъектно-ориентированной и реляционной СУБД](https://habrastorage.org/getpro/habr/upload_files/a07/e15/39f/a07e1539f1e006056bd7913cc8e39463.png)
![Пример объектно-ориентированной модели Пример объектно-ориентированной модели](https://habrastorage.org/getpro/habr/upload_files/cb6/8cb/7d4/cb68cb7d49ea7bd33ec811970c0332f6.png)
Наиболее известной объектно-ориентированной СУБД является Db4o, но есть и другие.
Полный список из 21 объектно-ориентированной СУБД
1. InterSystems Caché - мультимодальная
2. Db4o - объектно-ориентированная
3. Actian NoSQL Database - объектно-ориентированная
4. ObjectStore - объектно-ориентированная
5. Matisse - объектно-ориентированная
6. Perst - объектно-ориентированная
7. GigaSpaces - мультимодальная
8. ObjectBox - объектно-ориентированная, мультимодальная
9. ObjectDB - объектно-ориентированная
10. atoti - объектно-ориентированная
11. GemStone/S - объектно-ориентированная
12. Objectivity/DB - объектно-ориентированная
13. Starcounter - объектно-ориентированная
14. Jade - объектно-ориентированная
15. Actian Fast - объектно-ориентированная
16. Eloquera - объектно-ориентированная
17. Siaqodb - объектно-ориентированная
18. OrigoDB - мультимодальная
19. DataFS - объектно-ориентированная, мультимодальная
20. WakandaDB - объектно-ориентированная
21. VelocityDB - мультимодальная
RDF (Resource Description Framework)
RDF базы данных частично похожи на графовые базы. RDF СУБД функционируют на основе концепции формулировок утверждений, касающихся ресурсов, как выражений субъект-предикат-объект. Субъект обозначает ресурс, а предикат обозначает черты ресурса и определяет отношения между объектом и субъектом.
Вот что говорится про RDF в Википедии
Resource Description Framework (RDF, «среда описания ресурса») — это разработанная консорциумом Всемирной паутины модель для представления данных, в особенности — метаданных. RDF представляет утверждения о ресурсах в виде, пригодном для машинной обработки. RDF является частью концепции семантической паутины.
Ресурсом в RDF может быть любая сущность — как информационная (например, веб-сайт или изображение), так и неинформационная (например, человек, город или некое абстрактное понятие). Утверждение, высказываемое о ресурсе, имеет вид «субъект — предикат — объект» и называется триплетом. Утверждение «небо голубого цвета» в RDF-терминологии можно представить следующим образом: субъект — «небо», предикат — «имеет цвет», объект — «голубой». Для обозначения субъектов, отношений и объектов в RDF используются URI.
![Триплет RDF Триплет RDF](https://habrastorage.org/getpro/habr/upload_files/3c3/56d/aa5/3c356daa532f0e0a256a5a3f54601cd4.png)
Множество RDF-утверждений образует ориентированный граф, в котором вершинами являются субъекты и объекты, а рёбра отображают отношения.
RDF сам по себе является не форматом файла, а только лишь абстрактной моделью данных, то есть описывает предлагаемую структуру, способы обработки и интерпретации данных. Для хранения и передачи информации, уложенной в модель RDF, существует целый ряд форматов записи.
Для обработки RDF-данных предлагается реализовать языки запросов: SPARQL (стандарт W3C), RQL, RDQL.”
Полный список из 20 RDF СУБД
MarkLogic - мультимодальная
Apache Jena TDB - RDF
Virtuoso - мультимодальная
GraphDB - мультимодальная
Amazon Neptune - мультимодальная
Stardog - мультимодальная
AllegroGraph - мультимодальная
Blazegraph - мультимодальная
RDF4J - RDF
Redland - RDF
Strabon - RDF
4store - RDF
Mulgara - RDF
CubicWeb - RDF
RedStore - RDF
AnzoGraph DB - мультимодальная
BrightstarDB - RDF
Dydra - RDF
RDFox - мультимодальная
SparkleDB RDF
Wide Column Stores
Wide Column Stores (расширяемые хранилища записей) — это база данных NoSQL, в которой хранение данных организовано в виде гибких столбцов, которые можно распределить по нескольким серверам или узлам базы данных, используя многомерное сопоставление для ссылки на данные по столбцам, строкам и отметкам времени.
Преимущества Wide Column Stores баз данных включают скорость выполнения запросов, масштабируемость и гибкую модель данных.
Отличием от реляционных баз данных является следующее.
Система управления реляционными базами данных хранит данные в таблице со строками, которые охватывают несколько столбцов. Если для одной строки требуется дополнительный столбец, этот столбец должен быть добавлен ко всей таблице со значениями NULL или по умолчанию для всех остальных строк. Если вам нужно запросить в этой таблице СУБД значение, которое не проиндексировано, сканирование таблицы для поиска этих значений будет очень медленным.
Wide Column СУБД имеют концепцию строк как и реляционные базы данных, но чтение или запись строки данных состоит из чтения или записи отдельных столбцов. Столбец записывается только в том случае, если для него есть элемент данных. На каждый элемент данных можно ссылаться по ключу строки, запрос значения оптимизирован так же, как запрос индекса в СУБД.
![Иллюстрация работы расширяемого хранилища записей Иллюстрация работы расширяемого хранилища записей](https://habrastorage.org/getpro/habr/upload_files/f91/399/7a4/f913997a4793127744d4403cbb3c4fd9.png)
Первая модель столбца - это таблица сущностей/атрибутов/значений. Внутри каждого объекта (столбцы) есть таблица значений/атрибутов.
Концепция Wide Column СУБД позволяет строить решения для обработки действительно больших объемов данных.
Наиболее известными реализациями являются СУБД Cassandra и HBase
Список известных Wide Column СУБД
1. Cassandra - Wide column, мультимодальная
2. HBase - Wide column
3. Microsoft Azure Cosmos DB - мультимодальная
4. Datastax Enterprise - Wide column, мультимодальная
5. ScyllaDB - Wide column, мультимодальная
6. Microsoft Azure Table Storage - Wide column
7. Google Cloud Bigtable - мультимодальная
8. HPE Ezmeral Data Fabric - мультимодальная
9. Amazon Keyspaces - Wide column
10. Elassandra - Wide column, мультимодальная
11. Alibaba Cloud Table Store - Wide column
12. SWC-DB - Wide column, мультимодальная
13. Accumulo - Wide column
Мультимодальные СУБД
Стоит отметить, что каждая мультимодальная СУБД в конечном счете может быть сведена к одной или нескольким типам, на которых они основаны. А именно, где-то в основе реляционная модель, где-то документо-ориентированная и т.д. Но при этом они позволяют эмулировать дополнительные типы в плане пользовательского взаимодействия с ними.
Список мультимодальных СУБД
Adabas - мультимодальная
UniData - мультимодальная
jBASE - мультимодальная
Northgate Reality - мультимодальная
Model 204 - мультимодальная
D3 - мультимодальная
SciDB - мультимодальная
OpenInsight - мультимодальная
Rasdaman - мультимодальная
OpenQM - мультимодальная
Native XML СУБД
Тип Native XML Database основан на использовании внутреннего представления XML в отличие от XML-надстроек над существующими реляционными базами данных (XML enabled DB), в которых реализована XML-надстройка (XML-SQL) в соответствии со стандартом доступа SQL-2003.
Native XML СУБД предназначены для управления большим количеством XML-документов.
В XML native DB (NXD) используется внутреннее представление (иногда употребляют – бинарное) DOM XML в базе данных и присущи следующие признаки:
Определена логическая модель XML-документа, в соответствии с которой осуществляется хранение документа. Минимальная модель включает: элементы, атрибуты, секции PCDATA и список документов.
XML-документ представлен как фундаментальная часть хранилища (наподобие таблицы в реляционной базе данных).
Для доступа к хранилищу информации XML native DB должен использоваться язык запросов XQuery.
Список Native XML СУБД
MarkLogic - мультимодальная
Virtuoso - мультимодальная
Oracle Berkeley DB - мультимодальная
BaseX - Native XML
Sedna - Native XML
eXist-db - Native XML
searchxml - мультимодальная
GEO/GIS (пространственные) и специализированные СУБД
Если вы создаете картографический сервис, или специализированное приложение использующее данные о локации, будет логично использовать специализированные СУБД под хранение и обработку данных координат.
В отличии от других видов баз данных предназначенных для хранения и обработки числовой и символьной информации, пространственные базы данных обладают возможностями работы с целостными пространственными объектами, объединяющими как традиционные виды данных (описательная часть или атрибутивная), так и геометрические (данные о положении объекта в пространстве). Пространственные базы данных, позволяют выполнять аналитические запросы, содержащие пространственные операторы для анализа пространственно-логических отношений объектов («пересекается…», «касается…», «содержится в…», «содержит…», «находится на заданном расстоянии от…», «совпадает…» и другие).
![](https://habrastorage.org/getpro/habr/upload_files/2c6/f90/d0d/2c6f90d0d1df6193e5a45d949be4d219.png)
![Пространственные СУБД позволяют работать в геометрических терминах и строить GIS/GEO системы Пространственные СУБД позволяют работать в геометрических терминах и строить GIS/GEO системы](https://habrastorage.org/getpro/habr/upload_files/455/26b/be4/45526bbe43f91ff9c40e5586bc586d2d.png)
Список пространственных баз данных
PostGIS - Spatial DBMS, мультимодальная
Aerospike - мультимодальная
SpatiaLite - Spatial DBMS, мультимодальная
GeoMesa - Spatial DBMS
H2GIS - Spatial DBMS, мультимодальная
SpaceTime - Spatial DBMS, мультимодальная
Event СУБД (базы данных переходов состояний)
Представим ситуацию, что данные в вашей СУБД изменились и вы хотите понять событие их изменившее, и более того, просмотреть историю изменений и то, что к этому приводило.
Базы данных переходов состояний хранят не только сами данные но и поток/последовательность их изменений и событий, которые эти изменения вызывали.
Такой формат может быть полезен как для расследования инцидентов, так и для исследования бизнес и информационных процессов, происходящих в предприятии.
Приведем список известных баз данных переходов состояний
EventStoreDB - Event
NEventStore - Event
IBM Db2 Event Store - мультимодальная
Контентные СУБД
Контентные базы данных представляют собой реализации контентных репозиториев. Где контентный репозиторий это это иерархическое хранилище контента с поддержкой структурированного и неструктурированного контента, полнотекстового поиска, управления версиями, транзакций, наблюдения и другими функциями.
Контентные СУБД могут быть использованы для хранения и управления контентом (фото, тексты, репозитории с кодом и т.д.).
Приведем примеры контентных баз данных
Jackrabbit - контентная
ModeShape - контентная
Навигационные (Navigational) СУБД
Навигационные базы данных не имеют ничего общего с пространственными базами данных, как может показаться на первый взгляд по названию. Навигационная база данных — это тип базы данных, в которой записи или объекты находятся главным образом по ссылкам из других объектов. В чем-то это близко концепции графовых баз данных.
Навигационная база данных представляет собой комбинацию иерархической и сетевой модели интерфейсов базы данных. Методы навигации используют «указатели» и «пути» для навигации между записями данных. Противоположной моделью является реляционная модель, в которой используются «декларативные» методы, в которых вы спрашиваете систему о том, что вы хотите, а не о том, как к этому перейти.
![Визуализация структуры навигационных баз данных Визуализация структуры навигационных баз данных](https://habrastorage.org/getpro/habr/upload_files/fb3/d38/553/fb3d38553bfc829360c5908332f8df8f.png)
Приведем примеры реализаций навигационных баз данных.
IMS - навигационная
IDMS - навигационная
Векторные базы данных
Если вы занимаетесь машинным обучением, то основное, с чем вам приходится работать, это вектора. Это могут быть строки из таблицы, соответствующие признакам объекта, или эмбеддинг, полученный на выходе нейронной сети и характеризующий обработанный объект и в дальнейшем применяемый для идентификации по лицу или в переводе текста.
Специально для подобного рода задач были разработаны векторные базы данных, позволяющие работать непосредственно с векторами, представленными в виде числовых массивов.
Основное преимущество подобных баз, это скорость поиска и обработки векторов признаков. Можно как быстро искать похожие вектора, так и проводить над ними математические операции.
![Пример использования, где векторная база данных работает с Embedding сгенерированного при работе нейронной сети Пример использования, где векторная база данных работает с Embedding сгенерированного при работе нейронной сети](https://habrastorage.org/getpro/habr/upload_files/bcc/386/312/bcc3863123b40ce9ca9a271783f12c01.png)
![Схематическое отличие векторной базы данных от других видов СУБД Схематическое отличие векторной базы данных от других видов СУБД](https://habrastorage.org/getpro/habr/upload_files/372/dc1/fec/372dc1fec862e43e5547f0d4ddc57baa.png)
Векторные базы данных являются достаточно новым типом СУБД, где сложно назвать лидера.
Список векторных СУБД
Kdb мультимодальная
Pinecone - векторная
Chroma - векторная
Milvus - векторная
Weaviate - векторная
Vald - векторная
Qdrant - векторная
Deep Lake - векторная
Vespa - мультимодальная
MyScale - мультимодальная
Заключение
В данной статье мы рассмотрели разные типы систем управления базами данных, от самых популярных, таких как реляционные, до весьма экзотических, таких как навигационные. У каждого типа баз данных есть своя специализация, но это не отменяет того, что многие задачи хорошо решаются разными видами баз данных. В статье каждый тип данных был рассмотрен максимально лаконично, так как целью было дать именно общее представление о разнообразии СУБД. Более подробно типы баз данных будут рассмотрены в отдельных статьях.
В облаке Amvera Cloud вы можете развернуть PostgreSQL, MySQL, MongoDB и Redis в облаке Amvera Cloud "одной кнопкой". Amvera позволяет развернуть кластер из нескольких реплик с встроенными бэкапами. Стоимость хостинга баз данных начинается от 170 руб. в месяц. При регистрации будет автоматически зачислено на баланс 111 руб. для тестирования сервиса.