Часто, в обзорах видов баз данных упоминают реляционные и “другие”, “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.

Суть реляционных баз в хранении данных в связанных таблицах. 

Пример хранения данных в реляционной СУБД
Пример хранения данных в реляционной СУБД

Стоит заметить, что реляционные базы бывают с хранением данных по строкам (PostgreSQL) и по столбцам/колонкам (ClickHouse, Vertica). Колоночные/столбцовые базы лучше подходят для аналитики, в то время как ориентация на строки лучше подходит для транзакционных нагрузок.

Отличие колоночных/столбцовых СУБД от строковых
Отличие колоночных/столбцовых СУБД от строковых

Реляционные СУБД - самый распространенный тип баз данных. В подкате таблица из более чем 150 вариантов. Источником данного списка является данный сайт-агрегатор информации по базам данных.

Список реляционных баз данных (и инструментов, содержащих функционал, присущий базам данных, таких как SQL-движки и т.д.) и поддерживаемый тип данных.

Полный список из 166 реляционных СУБД
  1. Oracle - реляционная, мультимодальная

  2. MySQL - реляционная, мультимодальная

  3. Microsoft SQL Server -реляционная, мультимодальная

  4. PostgreSQL - реляционная, мультимодальная

  5. IBM Db2Relational - мультимодальная 

  6. Microsoft Access - реляционная

  7. SQLite - реляционная

  8. Snowflake - реляционная

  9. MariaDB - реляционная, мультимодальная

  10. Microsoft Azure SQL Database - реляционная, мультимодальная

  11. Hive - реляционная

  12. Databricks - мультимодальная

  13. Teradata - реляционная, мультимодальная

  14. Google BigQuery - реляционная

  15. FileMaker - реляционная

  16. SAP HANA - реляционная, мультимодальная

  17. SAP Adaptive Server - реляционная

  18. Microsoft Azure Synapse Analytics - реляционная

  19. Firebird - реляционная

  20. Informix - реляционная, мультимодальная

  21. Amazon Redshift - реляционная

  22. Impala - реляционная, мультимодальная

  23. Spark SQL - реляционная

  24. ClickHouse - реляционная, мультимодальная

  25. Netezza - реляционная

  26. Vertica - реляционная

  27. Presto - реляционная

  28. dBASE - реляционная

  29. Apache Flink - реляционная

  30. Greenplum - реляционная, мультимодальная

  31. Amazon Aurora - реляционная, мультимодальная

  32. H2 - реляционная, мультимодальная

  33. Oracle Essbase - реляционная

  34. Microsoft Azure Data Explorer - реляционная, мультимодальная

  35. Microsoft Azure Data Explorer - реляционная, мультимодальная 

  36. CockroachDB - реляционная

  37. Derby - реляционная

  38. Interbase - реляционная

  39. Trino - реляционная, мультимодальная

  40. SingleStore - реляционная, мультимодальная

  41. SAP SQL Anywhere - реляционная

  42. Ingres - реляционная

  43. HyperSQL - реляционная

  44. Ignite - мультимодальная

  45. SAP IQ - реляционная

  46. Virtuoso - мультимодальная

  47. OpenEdge - реляционная

  48. Oracle NoSQL - мультимодальная

  49. Google Cloud Spanner - реляционная

  50. YugabyteDB - реляционная, мультимодальная

  51. MaxDB - реляционная

  52. TiDB - реляционная, мультимодальная

  53. Apache Druid - мультимодальная

  54. InterSystems Caché - мультимодальная

  55. InterSystems IRIS - мультимодальная

  56. DuckDB - реляционная

  57. SAP Advantage Database Server - реляционная

  58. HEAVY.AI - реляционная, мультимодальная

  59. 4D - реляционная

  60. Percona Server for MySQL - реляционная

  61. EDB Postgres - реляционная

  62. Apache Drill - мультимодальная

  63. EXASOL - реляционная

  64. Apache Phoenix - реляционная

  65. Citus - реляционная, мультимодальная

  66. Datomic - реляционная

  67. Empress - реляционная

  68. GridGain - мультимодальная

  69. OceanBase - реляционная, мультимодальная

  70. MonetDB - реляционная, мультимодальная

  71. VoltDB - реляционная

  72. Tibero - реляционная

  73. TimesTen - реляционная

  74. IBM Db2 warehouse - реляционная

  75. SQLBase - реляционная

  76. Firebolt - реляционная

  77. Fauna - мультимодальная

  78. mSQL - реляционная

  79. MatrixOne - реляционная

  80. DataEase - реляционная

  81. Oracle Rdb - реляционная

  82. Altibase - реляционная

  83. PlanetScale - реляционная, мультимодальная

  84. NonStop SQL - реляционная

  85. Cubrid - реляционная

  86. Infobright - реляционная

  87. Apache Kylin - реляционная

  88. GBase - реляционная

  89. Apache HAWQ - реляционная

  90. NuoDB - реляционная

  91. Dolt - реляционная, мультимодальная

  92. solidDB - реляционная

  93. FoundationDB - мультимодальная

  94. 1010data - реляционная

  95. openGauss - реляционная, мультимодальная

  96. HFSQL - реляционная

  97. Actian Vector - реляционная

  98. SQL.JS - реляционная

  99. OpenBase - реляционная

  100. Vitess - реляционная, мультимодальная

  101. Kognitio - реляционная

  102. StarRocks - реляционная

  103. TDSQL for MySQL - реляционная, мультимодальная

  104. DBISAM - реляционная

  105. FrontBase - реляционная

  106. TypeDB - мультимодальная

  107. NexusDB - реляционная

  108. Datacom/DB - реляционная

  109. Kinetica - реляционная, мультимодальная

  110. eXtremeDB - мультимодальная

  111. ScaleArc - реляционная

  112. VistaDB - реляционная

  113. Yellowbrick - реляционная

  114. Splice Machine - реляционная

  115. Postgres-XL - реляционная, мультимодальная

  116. Alibaba Cloud MaxCompute - реляционная

  117. AlaSQL - мультимодальная

  118. Apache Pinot - реляционная

  119. Alibaba Cloud AnalyticDB for MySQL - реляционная, мультимодальная

  120. SQream DB - реляционная

  121. Sequoiadb - мультимодальная

  122. Kingbase - реляционная, мультимодальная

  123. Trafodion - реляционная

  124. R:BASE - реляционная

  125. Apache Doris - реляционная

  126. Transbase - реляционная

  127. Lovefield - реляционная

  128. Raima Database Manager - мультимодальная

  129. Alibaba Cloud AnalyticDB for PostgreSQL - реляционная

  130. Tajo - реляционная

  131. Mimer SQL - реляционная

  132. Kyligence Enterprise - реляционная

  133. YDB - мультимодальная

  134. Databend - реляционная

  135. Actian PSQL - реляционная

  136. Alibaba Cloud ApsaraDB for PolarDB - реляционная

  137. Brytlyt - реляционная

  138. XtremeData - реляционная

  139. TransLattice - реляционная

  140. ElevateDB - реляционная

  141. Comdb2 - реляционная

  142. Linter - реляционная, мультимодальная

  143. AntDB - реляционная

  144. FeatureBase - реляционная

  145. LeanXcale - Multi-model

  146. PipelineDB - реляционная

  147. GeoSpock - реляционная, мультимодальная

  148. Faircom DB - мультимодальная

  149. Tibco ComputeDB - реляционная

  150. Valentina Server - реляционная

  151. PieCloudDB - реляционная

  152. BigObject - реляционная

  153. Edge Intelligence - реляционная

  154. Fujitsu Enterprise Postgres - реляционная, мультимодальна

  155. EsgynDB - реляционная

  156. Transwarp KunDB - реляционная

  157. JethroData - реляционная

  158. MyScale - мультимодальная

  159. OushuDB - реляционная

  160. AgensGraph - мультимодальная

  161. SmallSQL - реляционная

  162. ActorDB - реляционная

  163. DaggerDB - реляционная

  164. EdgelessDB - реляционная

  165. K-DB - реляционная

  166. Sadas Engine - реляционная

Из отечественных игроков можно выделить 

  • Postgres Pro - доработанный под корпоративные задачи PostgreSQL.

  • Jatoba - как и вариант выше, основана на PostgreSQL.

  • Квант-Гибрид - еще один вариант PostgreSQL.

  • Ред - СУБД на базе Interbase/Firebird

  • ProximaBD - на основе  PostgreSQL.

  • Arenadata DB - корпоративное решение на основе Greenplum 

  • YDB - serverless решение от Яндекса

Вы можете развернуть реляционные базы данных PostgreSQL и MySQL в облаке Amvera Cloud c помощью простого push в выделенный Git-репозиторий. Для этого нужно выполнить несколько простых шагов, описанных в инструкциях для PostgreSQL и MySQL соответственно. Стоимость хостинга баз данных начинается от 170 руб. в месяц.

Реляционные базы закрывают широкий спектр задач, начиная от транзакционных баз и заканчивая аналитическими, но не являются “серебряной пулей” для всех задач. Рассмотрим другие виды базы данных.

Key-value (ключ значение) базы данных

Тип баз данных Key-value предназначен для осуществления быстрых, почти мгновенных запросов для таких задач как кэш, отображение баланса и т.д.. Высокая скорость осуществляется за счет хранения данных по принципу ключ-значение, и в большинстве случаев благодаря работе в оперативной памяти. 

Принцип Key-Value
Принцип Key-Value

Словари содержат коллекцию объектов или записей, а объекты содержат множество различных полей, каждое из которых содержит данные. Записи хранятся и извлекаются с использованием ключа, который однозначно идентифицирует запись и используется для быстрого поиска данных.

Основным применением является ускорение отображения данных для конечных пользователей и снижение нагрузок, в том числе I/O на инфраструктуру организаций.

Наиболее известными и широко используемыми Key-Value решениями являются Redis и Memcached.

Полный список из 72 Key-Value СУБД под катом
  1. Redis - Key-value, мультимодальная

  2. Amazon DynamoDB - мультимодальная

  3. Microsoft Azure Cosmos DB - мультимодальная

  4. Memcached - Key-value

  5. etcd - Key-value

  6. Hazelcast - Key-value, мультимодальная

  7. Aerospike - мультимодальная

  8. Ehcache - Key-value

  9. Riak KV - Key-value

  10. Ignite - мультимодальная

  11. OrientDB - мультимодальная

  12. Google Cloud Bigtable - мультимодальная

  13. GemFire - Key-value, мультимодальная

  14. ArangoDB - мультимодальная

  15. Infinispan - Key-value

  16. Oracle NoSQL - мультимодальная

  17. RocksDB Key-value

  18. Oracle Berkeley DB - мультимодальная

  19. InterSystems Caché - мультимодальная

  20. InterSystems IRIS - мультимодальная

  21. LevelDB - Key-value

  22. LMDB - Key-value

  23. Geode - Key-value

  24. Amazon SimpleDB - Key-value

  25. Geode - Key-value

  26. Amazon SimpleDB - Key-value

  27. Oracle Coherence - Key-value

  28. GridGain - мультимодальная

  29. Tarantool - Key-value, мультимодальная

  30. GT.M - Key-value

  31. ZODB - Key-value

  32. FoudationDB - мультимодальная

  33. NCache - Key-value

  34. WebSphere eXtreme Scale - Key-value

  35. Hibari - Key-value

  36. MapDB - Key-value

  37. BoltDB - Key-value

  38. Graph Engine - мультимодальная

  39. Scalaris - Key-value

  40. KeyDB - Key-value

  41. Project Voldemort - Key-value

  42. Upscaledb - Key-value

  43. Cloudflare Workers KV - Key-value

  44. Elliptics -  Key-value

  45. Tokyo - Tyrant - Key-value

  46. LeanXcale - мультимодальная

  47. Immudb - Key-value, мультимодальная

  48. STSdb - Key-value

  49. TomP2P - Key-value

  50. ArcadeDB - мультимодальная

  51. Speedb Key-value

  52. Faircom DB - мультимодальная

  53. Kyoto Tycoon - Key-value

  54. Skytable - Key-value

  55. HyperLevelDB - Key-value

  56. YTsaurus - мультимодальная

  57. InfinityDB - Key-value

  58. Tigris - мультимодальная

  59. Badger - Key - value

  60. Dragonfly - Key - value

  61. LedisDB - Key-value

  62. TerarkDB - Key-value

  63. Cachelot.io - Key-value

  64. ScaleOut StateServer - Key-value

  65. JaguarDB - Key-value

  66. Resin Cache - Key-value

  67. Faircom EDGE - мультимодальная

  68. SwayDB - Key-value

  69. BergDB - Key-value

  70. CortexDB - мультимодальная

  71. Helium - Key-value

  72. Tkrzw - Key-value

Из отечественных СУБД здесь следует отдельно выделить Tarantool, распространяемый под лицензией Упрощенная BSD и имеющий отдельную версию для крупных корпоративных клиентов. В Tarantool реализована гибридная схема данных: key-value, документно-ориентированная, реляционная и пространственная.

Вы можете развернуть Key-value базу данных Redis в облаке Amvera Cloud c помощью простого push в выделенный Git-репозиторий. Для этого нужно выполнить несколько простых шагов, описанных в инструкции по развертыванию Redis. Стоимость хостинга Redis начинается от 170 руб. в месяц.

Документо-ориентированные базы данных

Если вам нужно хранить много файлов/документов и вы не хотите задумываться (до разумных пределов, разумеется) о структуре хранения, иерархии, связях, вам может подойти одна из документо-ориентированных баз данных. Дополнительным преимуществом являются широкие возможности для масштабирования.

Принцип организации хранения документов в докумнто-ориентированной СУБД
Принцип организации хранения документов в докумнто-ориентированной СУБД

Документо-ориентированные базы данных созданы для хранения иерархических структур данных (документов). Основой документоориентированных СУБД являются документные хранилища, имеющие структуру дерева или леса. Деревья начинаются с корневого узла и может содержать несколько внутренних и листовых узлов. Листовые узлы содержат данные, которые при добавлении документа заносятся в индексы, это дает возможность даже при достаточно сложной структуре находить путь к искомых данных. В отличие от хранилищ типа ключ-значение, выборка по запросу к документному хранилищу может содержать части большого количества документов без полной загрузки этих документов в оперативную память.

Наиболее популярной документо-ориентированной базой данных на текущий момент является MongoDB.

Как хранятся данные в MongoDB
Как хранятся данные в MongoDB
Полный список из 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 c помощью простого push в выделенный Git-репозиторий. Для этого нужно выполнить несколько простых шагов, описанных в инструкции по развертыванию MongoDB. Стоимость хостинга MongoDB начинается от 170 руб. в месяц.

Базы данных временных рядов

Если у вас есть упорядоченные по времени данные с временными метками, такие как метрики от инфраструктуры или данные датчиков, может быть полезно использовать одну из баз данных временных рядов.

Принцип хранения данных в базе данных временных рядов. Как мы видим, важной особенностью является наличие столбца соответствующего времени события.
Принцип хранения данных в базе данных временных рядов. Как мы видим, важной особенностью является наличие столбца соответствующего времени события.

Общие характеристики баз данных временных рядов:

  • Данные временных рядов всегда собираются на протяжении определенного периода времени.

  • Данные из рабочих нагрузок являются новыми и записываются как вставки. Уже существующие данные не обновляются путем замены.

  • Когда данные записываются, они автоматически назначаются последнему интервалу времени.

Базы даных временных рядов часто используются для осуществления мониторинга различных метрик (будь то загрузка CPU, или показатели работы какого-либо датчика).

Когда вы смотрите в Grafana подобные графики, сама Grafana строит их на основе данных из СУБД временных рядов Prometheus.
Когда вы смотрите в Grafana подобные графики, сама Grafana строит их на основе данных из СУБД временных рядов Prometheus.

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

Данные и их связи представляются как вершины и ребра графа соответственно. 

Таким способом можно легко представить денежные переводы (для определения различных мошеннических схем), связи в социальной сети и граф общения между операторами сотовой сети.

Пример визуализации Графа
Пример визуализации Графа

Чаще всего графовые базы данных используются в финансовой сфере для выявление различных мошеннических схем, но они будут удобны и для любой другой задачи, где нужно работать со связями объектов.

Наиболее известное 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-грамме присвоим индекс и запишем эти индексы в специальную таблицу, где строки, это документ, а в столбики это индексы. Похожая система используется для построения систем поиска плагиата, правда там чаще применяют не слова, а шинглы (индексы с наслоением).

Пример генерации шинглов для дальнейшего использования в поиске плагиата
Пример генерации шинглов для дальнейшего использования в поиске плагиата

А искать по индексу существенно быстрее, чем по совпадению по словам в документах.

Строго говоря, для поиска по документам можно использовать и эмбеддинги нейронных сетей, в которых закодирован "смысл" высказываний. Но для данной задачи лучше подойдут векторные базы данных, которые замыкают наш список.

Разумеется, современные поисковые СУБД предлагают значительно более широкий функционал.

Наиболее популярны такие решения как 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

мультимодальная 

Объектно-ориентированные базы данных

Объектно-ориентированные базы данных представляют собой базы данных, в где информация представлена в виде объектов, как в объектно-ориентированных языках программирования.

Объектно-ориентированные базы данных появились как способ нативной коммуникации кода написанного с использованием объектно-ориентированных языков с базой данных.

Объектно-ориентированные базы данных обладают следующими преимуществами: 

  • Нет проблемы несоответствия модели данных в бд и приложении, так как в БД они сохраняются в том же виде.

  • Не нужно отдельно поддерживать модель данных на стороне базы данных.

  • Все объекты на уровне источника строго типизированы.

Сравнение оъектно-ориентированной и реляционной СУБД
Сравнение оъектно-ориентированной и реляционной СУБД
Пример объектно-ориентированной модели
Пример объектно-ориентированной модели

Наиболее известной объектно-ориентированной СУБД является 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

Множество RDF-утверждений образует ориентированный граф, в котором вершинами являются субъекты и объекты, а рёбра отображают отношения.

RDF сам по себе является не форматом файла, а только лишь абстрактной моделью данных, то есть описывает предлагаемую структуру, способы обработки и интерпретации данных. Для хранения и передачи информации, уложенной в модель RDF, существует целый ряд форматов записи.

Для обработки RDF-данных предлагается реализовать языки запросов: SPARQL (стандарт W3C), RQL, RDQL.”

Полный список из 20 RDF СУБД
  1. MarkLogic - мультимодальная

  2. Apache Jena TDB - RDF

  3. Virtuoso - мультимодальная

  4. GraphDB - мультимодальная

  5. Amazon Neptune - мультимодальная

  6. Stardog - мультимодальная

  7. AllegroGraph - мультимодальная

  8. Blazegraph - мультимодальная

  9. RDF4J  - RDF

  10. Redland - RDF

  11. Strabon - RDF

  12. 4store - RDF

  13. Mulgara - RDF

  14. CubicWeb - RDF

  15. RedStore - RDF

  16. AnzoGraph DB - мультимодальная

  17. BrightstarDB - RDF

  18. Dydra - RDF

  19. RDFox - мультимодальная

  20. SparkleDB RDF

Wide Column Stores

Wide Column Stores (расширяемые хранилища записей) — это база данных NoSQL, в которой хранение данных организовано в виде гибких столбцов, которые можно распределить по нескольким серверам или узлам базы данных, используя многомерное сопоставление для ссылки на данные по столбцам, строкам и отметкам времени.

Преимущества Wide Column Stores баз данных включают скорость выполнения запросов, масштабируемость и гибкую модель данных.

Отличием от реляционных баз данных является следующее.

Система управления реляционными базами данных хранит данные в таблице со строками, которые охватывают несколько столбцов. Если для одной строки требуется дополнительный столбец, этот столбец должен быть добавлен ко всей таблице со значениями NULL или по умолчанию для всех остальных строк. Если вам нужно запросить в этой таблице СУБД значение, которое не проиндексировано, сканирование таблицы для поиска этих значений будет очень медленным.

Wide Column СУБД имеют концепцию строк как и реляционные базы данных, но чтение или запись строки данных состоит из чтения или записи отдельных столбцов. Столбец записывается только в том случае, если для него есть элемент данных. На каждый элемент данных можно ссылаться по ключу строки, запрос значения оптимизирован так же, как запрос индекса в СУБД.

Иллюстрация работы расширяемого хранилища записей
Иллюстрация работы расширяемого хранилища записей

Первая модель столбца - это таблица сущностей/атрибутов/значений. Внутри каждого объекта (столбцы) есть таблица значений/атрибутов. 

Концепция 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

Мультимодальные СУБД

Стоит отметить, что каждая мультимодальная СУБД в конечном счете может быть сведена к одной или нескольким типам, на которых они основаны. А именно, где-то в основе реляционная модель, где-то документо-ориентированная и т.д. Но при этом они позволяют эмулировать дополнительные типы в плане пользовательского взаимодействия с ними.

Список мультимодальных СУБД
  1. Adabas - мультимодальная

  2. UniData - мультимодальная

  3. jBASE - мультимодальная

  4. Northgate Reality - мультимодальная

  5. Model 204 - мультимодальная

  6. D3 - мультимодальная

  7. SciDB - мультимодальная

  8. OpenInsight - мультимодальная

  9. Rasdaman - мультимодальная

  10. 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 СУБД
  1. MarkLogic - мультимодальная

  2. Virtuoso - мультимодальная

  3. Oracle Berkeley DB - мультимодальная

  4. BaseX - Native XML

  5. Sedna - Native XML

  6. eXist-db - Native XML

  7. searchxml - мультимодальная

GEO/GIS (пространственные) и специализированные  СУБД

Если вы создаете картографический сервис, или специализированное приложение использующее данные о локации, будет логично использовать специализированные СУБД под хранение и обработку данных координат.

В отличии от других видов баз данных предназначенных для хранения и обработки числовой и символьной информации, пространственные базы данных обладают возможностями работы с целостными пространственными объектами, объединяющими как традиционные виды данных (описательная часть или атрибутивная), так и геометрические (данные о положении объекта в пространстве).  Пространственные базы данных, позволяют выполнять аналитические запросы, содержащие пространственные операторы для анализа пространственно-логических отношений объектов («пересекается…», «касается…», «содержится в…», «содержит…», «находится на заданном расстоянии от…», «совпадает…» и другие).

Пространственные СУБД позволяют работать в геометрических терминах и строить GIS/GEO системы
Пространственные СУБД позволяют работать в геометрических терминах и строить GIS/GEO системы
Список пространственных баз данных
  1. PostGIS - Spatial DBMS, мультимодальная

  2. Aerospike - мультимодальная

  3. SpatiaLite - Spatial DBMS, мультимодальная

  4. GeoMesa - Spatial DBMS

  5. H2GIS - Spatial DBMS, мультимодальная

  6. SpaceTime - Spatial DBMS, мультимодальная

Event СУБД (базы данных переходов состояний)

Представим ситуацию, что данные в вашей СУБД изменились и вы хотите понять событие их изменившее, и более того, просмотреть историю изменений и то, что к этому приводило.

Базы данных переходов состояний хранят не только сами данные но и поток/последовательность их изменений и событий, которые эти изменения вызывали.

Такой формат может быть полезен как для расследования инцидентов, так и для исследования бизнес и информационных процессов, происходящих в предприятии. 

Приведем список известных баз данных переходов состояний

  1. EventStoreDB - Event

  2. NEventStore - Event 

  3. IBM Db2 Event Store - мультимодальная

Контентные СУБД

Контентные базы данных представляют собой реализации контентных репозиториев. Где контентный репозиторий это это иерархическое хранилище контента с поддержкой структурированного и неструктурированного контента, полнотекстового поиска, управления версиями, транзакций, наблюдения и другими функциями.

Контентные СУБД могут быть использованы для хранения и управления контентом (фото, тексты, репозитории с кодом и т.д.).

Приведем примеры контентных баз данных

  1. Jackrabbit - контентная

  2. ModeShape - контентная

Навигационные (Navigational) СУБД

Навигационные базы данных не имеют ничего общего с пространственными базами данных, как может показаться на первый взгляд по названию. Навигационная база данных — это тип базы данных, в которой записи или объекты находятся главным образом по ссылкам из других объектов. В чем-то это близко концепции графовых баз данных.

Навигационная база данных представляет собой комбинацию иерархической и сетевой модели интерфейсов базы данных. Методы навигации используют «указатели» и «пути» для навигации между записями данных. Противоположной моделью является реляционная модель, в которой используются «декларативные» методы, в которых вы спрашиваете систему о том, что вы хотите, а не о том, как к этому перейти.

Визуализация структуры навигационных баз данных
Визуализация структуры навигационных баз данных

Приведем примеры реализаций навигационных баз данных.

  1. IMS - навигационная

  2. IDMS - навигационная

Векторные базы данных

Если вы занимаетесь машинным обучением, то основное, с чем вам приходится работать, это вектора. Это могут быть строки из таблицы, соответствующие признакам объекта, или эмбеддинг, полученный на выходе нейронной сети и характеризующий обработанный объект и в дальнейшем применяемый для идентификации по лицу или в переводе текста.

Специально для подобного рода задач были разработаны векторные базы данных, позволяющие работать непосредственно с векторами, представленными в виде числовых массивов.

Основное преимущество подобных баз, это скорость поиска и обработки векторов признаков. Можно как быстро искать похожие вектора, так и проводить над ними математические операции.

Пример использования, где векторная база данных работает с Embedding сгенерированного при работе нейронной сети
Пример использования, где векторная база данных работает с Embedding сгенерированного при работе нейронной сети
Схематическое отличие векторной базы данных от других видов СУБД
Схематическое отличие векторной базы данных от других видов СУБД

Векторные базы данных являются достаточно новым типом СУБД, где сложно назвать лидера.

Список векторных СУБД
  1. Kdb мультимодальная

  2. Pinecone - векторная

  3. Chroma - векторная

  4. Milvus - векторная

  5. Weaviate - векторная

  6. Vald - векторная

  7. Qdrant - векторная

  8. Deep Lake - векторная

  9. Vespa - мультимодальная

  10. MyScale - мультимодальная

Заключение

В данной статье мы рассмотрели разные типы систем управления базами данных, от самых популярных, таких как реляционные, до весьма экзотических, таких как навигационные. У каждого типа баз данных есть своя специализация, но это не отменяет того, что многие задачи хорошо решаются разными видами баз данных. В статье каждый тип данных был рассмотрен максимально лаконично, так как целью было дать именно общее представление о разнообразии СУБД. Более подробно типы баз данных будут рассмотрены в отдельных статьях.


В облаке Amvera Cloud вы можете развернуть PostgreSQL, MySQL, MongoDB и Redis c помощью простого push в выделенный Git-репозиторий. Для этого нужно выполнить несколько простых шагов, описанных в инструкциях для MongoDB, PostgreSQL, MySQL, Redis. Стоимость хостинга баз данных начинается от 170 руб. в месяц. Для теста системы вы можете ввести код QCOWI100, который добавит немного баланса для проведения экспериментов без необходимости предварительной оплаты.

Комментарии (12)


  1. Al_Pollitruk
    21.08.2023 08:59

    Спасибо за статью, а вы встречали материал, который бы на конкретном практическом примере показывал плюсы и минусы различного типа СУБД?


    1. kirillkosolapov Автор
      21.08.2023 08:59
      +1

      Для этого лучше использовать данные с синтетических тестов для производительности. А вот параметры удобства и т.д., наверное, лучше смотреть в сравнениях конкретных СУБД. Но сама идея взять несколько кейсов и сделать сравнение по типам хорошая, хотя скорее всего будут явные лидеры и много исключений, не попадающих в методологию сравнения.


  1. trir
    21.08.2023 08:59
    +2

    "Список пространственных баз данных" - полная херня
    PostGIS это плагин к PostgreSQL (туда затащили GDAL/OGR), также нужно было указать : MySQL (MariaDB), Microsoft SQL Server и Oracle
    SpatiaLite это расширение к SQLite


    1. kirillkosolapov Автор
      21.08.2023 08:59

      Это список с ресурса db-engines. Там есть вопросы к классификации, но как правило на этом ресурсе сами вендоры указывают к какому классу относить их БД.


    1. hard_sign
      21.08.2023 08:59
      +3

      Как только вы пытаетесь построить сколько-нибудь внятную классификацию, становится понятно, что любая классификация условна. Чтобы ткнуть в наугад выбранный пример и сказать «это херня» – ума много не надо.

      Попробуйте для начала хотя бы дать определение «базы данных». RocksDB и SQLite – база данных. И PostgreSQL и Microsoft SQL Server – тоже базы данных. Хотя функциональность продуктов немножко разная.


      1. trir
        21.08.2023 08:59

        первое файловые/встраиваемы, вторые серверные
        В данном случае этот список просто не информативный и вводит в заблуждение


  1. nitrosbase
    21.08.2023 08:59

    «Мультимодельные», а не «мультимодальные».

    Помимо db-engines.com, на материалах которого основывается изложение, есть ещё dbdb.io.

    А вот такой обзор делался в 2020 году для капиталистов: dbms.sh.capital.


  1. Maksim-K
    21.08.2023 08:59

    Мучаюсь с выбором субд для ведения базы клиентов вместо срм


    1. kspshnik
      21.08.2023 08:59

      Мучаетесь с выбором коробки передач и передней подвески вместо машины?


  1. Bromles
    21.08.2023 08:59

    В рядах поисковых движков есть еще Meilisearch. Пока потупее Эластика, но сильно проще и оптимизированнее, для более мелких проектов может подойти


    1. Bromles
      21.08.2023 08:59

      Отбой, заметил сейчас его в списке, первый раз просмотрел его


  1. ArcMeph
    21.08.2023 08:59

    Пользуясь случаем хочу спросить: существуют ли встраиваемые графовые БД, не требующие сервера, а-ля SQLite или LiteDB? И какие вообще существуют встраиваемые БД? В подавляющем большинстве статей, которые я видел, эта тема как-то опускается