数据库 是 “按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。
因为内存中数据断电易失,因此在我们绝大部分的项目中,或多或少都会用到数据库来持久化数据。当然,也有一些项目用到了 In-Memery 数据库。之前有听到有些朋友觉得 In-Memery 就是NoSQL 数据库,其实这个理解是不对的。所以本篇就来科普一下数据库的分类。
NoSQL的由来
在数据库的发展历史上,数据库先后经历了层次数据库、网状数据库和关系数据库等各个阶段的发展,数据库技术在各个方面的快速的发展。特别是关系型数据库已经成为目前数据库产品中最重要的一员,80年代以来, 几乎所有的数据库厂商新出的数据库产品都支持关系型数据库,即使一些非关系数据库产品也几乎都有支持关系数据库的接口。这主要是传统的关系型数据库可以比较好的解决管理和存储关系型数据的问题。
随着云计算的发展和大数据时代的到来,关系型数据库越来越无法满足需要,这主要是由于越来越多的半关系型和非关系型数据需要用数据库进行存储管理,以此同时,分布式技术等新技术的出现也对数据库的技术提出了新的要求,于是越来越多的非关系型数据库就开始出现,这类数据库与传统的关系型数据库在设计和数据结构有了很大的不同, 它们更强调数据库数据的高并发读写和存储大数据,这类数据库一般被称为NoSQL(Not only SQL)数据库。 而传统的关系型数据库在一些传统领域依然保持了强大的生命力。
通过上面的介绍,我想您已经豁然开朗。NoSQL数据库只是区别于层次数据库、网状数据库、关系数据库的一种顺势而生的数据库形态。NoSQL数据库的产生是当前IT技术发展的必然趋势。而由于Oracle、MySQL、DB2等关系数据库的深入人心,所以很多人对NoSQL的理解仅仅只停留在了听过的阶段,而产生了一些误解。
注:如果您想更多的了解NoSQL,建议先了解一下什么是SQL(结构化查询语言,Structured Query Language)。对比理解,您将会有一个很深的感悟,这里就不展开讲解了。
In-Memery数据库
In-Memery数据库又称为内存数据库,是指一种将全部内容存放在内存中,而非传统数据库那样存放在外部存储器中的数据库。
内存数据库指的是所有的数据访问控制都在内存中进行,这是与磁盘数据库相对而言的。磁盘数据库虽然也有一定的缓存机制,但都不能避免从外设到内存的交换,而这种交换过程对性能的损耗是致命的。由于内存的读写速度极快(双通道DDR3-1333可以达到9300 MB/s,一般磁盘约150 MB/s),随机访问时间更是可以纳秒计(一般磁盘约10 ms,双通道DDR3-1333可以达到0.05 ms),所以这种数据库的读写性能很高,主要用在对性能要求极高的环境中,但是在服务器关闭后会立刻丢失全部储存的数据。
注:一些内存数据库也会有持久化机制,并不能因为它也用到了磁盘存储而不认为它是内存数据库。
NoSQL数据库和In-Memery数据库
通过上面两个小章节的讲解,是不是明白了NoSQL数据库和In-Memery数据库并不是一回事。
NoSQL数据库是一种基于数据库引擎或者数据库工作方式分类,尤其是区别于关系数据库。而In-Memery数据库则重点是数据存储介质不同而划分出来的一种数据库。这两个名词是从不同维度来对数据库进行分类。
所以,您可以说某一个指定的数据库是NoSQL数据库并且也是In-Memery数据库。但是并不能得出结论NoSQL数据库就是In-Memery数据库,或者In-Memery数据库就是NoSQL数据库这样的结论。
OK!下面就来介绍一下当前主流的数据库分类,以及代表数据库。
主流数据库分类
Relational DBMS (关系型数据库)
简述
关系数据库管理系统(RDBMS)支持关系数据模型。表的架构由表名称和具有固定数据类型的固定数量的属性定义。记录对应于表中的一行,并由每个属性的值组成。因此,一个关系由一组统一的记录组成。
DB-Engines排名(2021-03)
Rank | DBMS | DB-Engines Score |
---|---|---|
1 | Oracle | 1321.73 |
2 | MySQL | 1254.83 |
3 | Microsoft SQL Server | 1015.30 |
4 | PostgreSQL | 549.29 |
5 | IBM DB2 | 156.01 |
Key-value Stores(键-值数据库)
简述
键值存储可能是数据库管理系统的最简单形式。它们只能存储成对的键和值,以及在已知键时检索值。
DB-Engines排名(2021-03)
Rank | DBMS | DB-Engines Score |
---|---|---|
1 | Redis | 154.15 |
2 | Amazon DynamoDB | 68.89 |
3 | Microsoft Azure Cosmos DB | 32.41 |
4 | Memcached | 25.40 |
5 | Hazelcast | 9.09 |
Document Stores(文档数据库)
简述
文档存储,也称为面向文档的数据库系统,其无模式的数据组织是它的显著特征。其文档存储区经常使用内部表示法,可以直接在应用程序(主要是JSON)中进行处理。
DB-Engines排名(2021-03)
Rank | DBMS | DB-Engines Score |
---|---|---|
1 | MongoDB | 462.39 |
2 | Amazon DynamoDB | 68.89 |
3 | Microsoft Azure Cosmos DB | 32.41 |
4 | Couchbase | 31.00 |
5 | Firebase Realtime Database | 16.95 |
Time Series DBMS(时序数据库)
简述
时间序列DBMS是为处理时间序列数据而优化的数据库管理系统:每个条目都与时间戳关联。
例如,时间序列数据可以由所谓的物联网中的传感器,智能仪表或RFID生成,或者可以描述高频股票交易系统的股票报价器。
DB-Engines排名(2021-03)
Rank | DBMS | DB-Engines Score |
---|---|---|
1 | InfluxDB | 26.87 |
2 | Kdb+ | 7.76 |
3 | Prometheus | 5.90 |
4 | Graphite | 4.67 |
5 | RRDTool | 2.90 |
Graph DBMS(图数据库)
简述
图DBMS,也称为面向图的DBMS或图数据库,将图结构中的数据表示为节点和边,即节点之间的关系。它们允许轻松处理该形式的数据,并且可以简单地计算图形的特定属性,例如从一个节点到另一个节点所需的步骤数。
DB-Engines排名(2021-03)
Rank | DBMS | DB-Engines Score |
---|---|---|
1 | Neo4j | 52.32 |
2 | Microsoft Azure Cosmos DB | 32.41 |
3 | ArangoDB | 5.05 |
4 | OrientDB | 4.71 |
5 | Virtuoso | 2.88 |
Object Oriented DBMS(对象数据库)
简述
面向对象的数据库管理系统(通常称为对象数据库)是在1980年代开发的,其动机是面向对象的编程语言的普遍使用。目的是能够以与编程语言中的对象表示相对应的方式将对象简单地存储在数据库中,而无需进行转换或分解。另外,对象之间的关系(例如继承)也应在数据库中维护。
DB-Engines排名(2021-03)
Rank | DBMS | DB-Engines Score |
---|---|---|
1 | InterSystems Caché | 3.42 |
2 | InterSystems IRIS | 1.67 |
3 | Actian NoSQL Database | 1.59 |
4 | Db4o | 1.58 |
5 | ObjectStore | 1.47 |
Search Engines(搜索引擎)
简述
搜索引擎是NoSQL 数据库管理系统,专用于搜索数据内容。除了针对此类应用程序的常规优化之外,该专业化还包括通常提供以下功能:
- 支持复杂的搜索表达式
- 全文搜索
- 词干(减少词干变化)
- 搜索结果的排名和分组
- 分布式搜索以实现高可扩展性
DB-Engines排名(2021-03)
Rank | DBMS | DB-Engines Score |
---|---|---|
1 | Elasticsearch | 152.34 |
2 | Splunk | 86.93 |
3 | Solr | 50.21 |
4 | MarkLogic | 9.64 |
5 | Algolia | 7.64 |
RDF Stores (资源描述框架数据库,Resource Description Framework)
简述
资源描述框架(RDF)是一种信息描述方法,最初是为描述IT资源的元数据而开发的。如今,它已被更广泛地使用,通常与语义网结合使用,但也用于其他应用程序中。
DB-Engines排名(2021-03)
Rank | DBMS | DB-Engines Score |
---|---|---|
1 | MarkLogic | 9.64 |
2 | Apache Jena - TDB | 3.12 |
3 | Virtuoso | 2.88 |
4 | GraphDB | 2.27 |
5 | Amazon Neptune | 1.86 |
Wide Column Stores(宽列数据库)
简述
宽列存储(也称为可扩展记录存储)将数据存储在记录中,并且能够容纳大量动态列。由于列名和记录键不是固定的,并且一条记录可以包含数十亿列,因此宽列存储可以看作是二维键值存储。
DB-Engines排名(2021-03)
Rank | DBMS | DB-Engines Score |
---|---|---|
1 | Cassandra | 113.63 |
2 | HBase | 44.69 |
3 | Microsoft Azure Cosmos DB | 32.41 |
4 | Datastax Enterprise | 8.27 |
5 | Microsoft Azure Table Storage | 4.88 |
Multivalue DBMS(多值数据库)
简述
多值DBMS是数据库管理系统,类似于关系系统(RDBMS),该系统将数据存储在表中。但是,除了RDBMS之外,它们还可以为记录的属性分配多个值。由于这与第一范式矛盾,因此有时将这些系统称为NF2(非第一范式)系统。
DB-Engines排名(2021-03)
Rank | DBMS | DB-Engines Score |
---|---|---|
1 | Adabas | 4.58 |
2 | UniData,UniVerse | 4.01 |
3 | jBASE | 1.84 |
4 | D3 | 1.43 |
5 | Model 204 | 1.32 |
Native XML DBMS(原生XML数据库)
简述
原生XML DBMS(有时缩写为NXD)也是一种数据库管理系统,其内部数据模型与XML文档相对应。
DB-Engines排名(2021-03)
Rank | DBMS | DB-Engines Score |
---|---|---|
1 | MarkLogic | 9.64 |
2 | Oracle Berkeley DB | 3.12 |
3 | Virtuoso | 2.88 |
4 | BaseX | 1.78 |
5 | Sedna | 0.98 |
Event Stores(事件数据库)
简述
事件存储是实现事件来源概念的数据库管理系统。它们将对象的所有状态更改事件与时间戳一起保留,从而为单个对象创建时间序列。可以通过重播该对象从时间0到当前时间的所有事件来推断该对象的当前状态。
DB-Engines排名(2021-03)
Rank | DBMS | DB-Engines Score |
---|---|---|
1 | EventStoreDB | 0.65 |
2 | IBM Db2 Event Store | 0.39 |
3 | NEventStore | 0.23 |
Content Stores(内容存储库)
简述
内容存储库,也称为内容存储库,是专门用于管理数字内容(例如文本,图片或视频,包括其元数据)的数据库管理系统。
DB-Engines排名(2021-03)
Rank | DBMS | DB-Engines Score |
---|---|---|
1 | Jackrabbit | 5.09 |
2 | ModeShape | 0.41 |
Navigational DBMS(导航数据库)
简述
导航DBMS一词描述了一类数据库管理系统,该系统仅允许通过链接记录访问数据集。
DB-Engines排名(2021-03)
Rank | DBMS | DB-Engines Score |
---|---|---|
1 | IMS | 2.79 |
2 | IDMS | 1.17 |
最后
本篇文章借由NoSQL数据库和In-Memery数据库概念混淆为契机,介绍了当前时下的几种数据库分类,以及每种分类本月在DB-Engine上排名前五的数据库。
不过作者在整理这些的时候才发现,原来很多类型的分类平时听都没听过。不过存在即合理!这些小众的数据库都是在一些特定领域上才能发挥最大的作用。平时的项目中没有这些业务的话,一般也不会去想到用这些。
真是感慨!世界很大,知识很多。少装逼,多读书!(●ˇ∀ˇ●)
欢迎关注我的公众号 须弥零一,跟我一起学习IT知识。
如果您喜欢此博客或发现它对您有用,则欢迎对此发表评论。 也欢迎您共享此博客,以便更多人可以参与。 如果博客中使用的图像侵犯了您的版权,请与作者联系以将其删除。 谢谢 !