精选文章

如何选择数据库?这七种数据库的好坏你了解多少?

2021-05-26 08:56:12 | 来源:中培企业IT培训网

如今,有数百个SQL和NoSQL数据库。其中有些数据库很受欢迎,有些数据库则被忽略;有些是用户比较喜欢使用的并且有据可查,有些则很难使用;有些数据库是开源的,有些是专有的;最重要的是有些数据库是可伸缩的,优化的,高度可用的,而有些则很难扩展或维护。有一个自然的问题:如何选择数据库?为了回答这个问题,我们应该决定要使用数据库实现的目标。要创建视图,我们应该回答以下问题:我们需要对数据库的分析访问吗?我们需要实时书写或阅读吗?我们要存储多少张表/记录?我们需要什么可用性?我们需要列吗?我们将访问按列过滤还是按行过滤的表?

做出决定后,我们需要牢记一个或另一个数据库能够提供的内容。每个数据库的特定功能可能会有所不同,但是通常,只有少数几种类型的数据库。在这些类型中,我们可以实现几乎相同的目标。让我们仔细看看它们。

1. SQL关系数据库

如果您曾经使用过数据库,则很可能已经开始使用这种类型的数据库。这种类型是最流行和广泛使用的。这些数据库允许将数据存储在具有特定类型的已定义列的关系表中。关系表是良好的规范化和联接。

好处

SQL支持

ACID事务(原子性,一致性,隔离性和持久性)

索引和分区支持

缺点

对非结构化数据/复杂类型的支持不佳

错误的事件处理优化

困难/昂贵的缩放

示例:Oracle DB,MySQL,PostgreSQL。

2.面向文档的数据库

如果我们不想连接多个表来检索所需的数据,我们可以看一下面向文档的数据库。这些数据库允许以类似JSON的格式存储记录。使用这种格式,我们可以为任何键创建复杂的值,并将所有数据结构一次包含在一条记录中。

好处

无架构

无需总是在每条记录中写入所有字段

良好的复杂类型支持

适合OLTP

缺点

交易支持不佳

不良的分析支持

困难/昂贵的缩放

示例:MongoDB

3.内存数据库

这种类型的数据库可以提供实时响应,以选择和插入特定记录。它们中的大多数主要将数据存储到RAM中,但在某些情况下还可以在HDD或SSD上提供持久性存储。这些数据库中的大多数都使用键/值记录进行操作,因此值可以调用面向文档的格式。但是某些数据库还使用列进行操作,并允许在同一表中进行二级索引。使用RAM可以快速处理数据,但使其更加不稳定和昂贵。

好处

快速写作

快速阅读

缺点

可靠性差

昂贵的缩放

示例:Redis,Tarantool,Apache Ignite

4.宽列数据库

这些数据库将数据存储为HDD或SSD上的键/值记录。这些解决方案旨在充分扩展,以管理分布式系统中数千个商用服务器中的PB数据。它们代表SSTable体系结构。该体系结构设计用于两个用例:按键快速访问和快速,高可用性的编写。

好处

逐行快速书写

快速读取按键

良好的可扩展性

高可用性

缺点

键/值格式

没有分析支持

示例:Cassandra,HBase

5.柱状数据库

有时我们需要快速访问数据,而不是使用特定的键,而是使用特定的列。在这种情况下,我们最好避免逐行插入,而转为批量写入。批处理插入允许列式数据库准备数据以供列快速读取。

好处

按列快速阅读

良好的分析支持

良好的可扩展性

缺点

仅适用于批量插入

示例:Vertica,Clickhouse

6.搜索引擎

如果我们想通过任何值甚至是列中的任何单词使用过滤器访问数据,我们都应该记住搜索引擎。这些数据库对列中的每个单词进行索引,并允许全文搜索。它们非常适合存储和分析日志或较大的文本值。

好处

一字快速访问

良好的可扩展性

缺点

仅适用于批量插入

不良的分析支持

示例:ElasticSearch,Apache Solr

7.图形数据库

对于某些用例,存在图数据结构。我们可以在图形数据库中找到它们的实现。如果您的任务需要使用图形,则可以使用专门设计的数据库来满足您的需求。

好处

图形数据结构

实体之间的可管理关系

灵活的结构

缺点

特殊查询语言

难以扩展

示例: Neo4j

关于如何选择数据库,上述推荐了7款使用比较广泛的数据库。至于到底如何选择,其实所有类型的数据库都可以完成所有任务。问题是它会多么昂贵和如何优化。选择您惯用的工具可以缩短产品上市时间,但同时也会花费大量金钱维护和扩展您的硬件,而这可能会导致效率低下。始终尝试按照其使用方式使用数据库。也许,就能找到适合所需求的解决方案。想了解更多数据库的信息,请继续关注中培伟业。