1

我在一家大公司工作,该公司在处理后端系统的负载方面存在问题。他们正在考虑替换旧的遗留系统/数据库,并将其替换为水平可扩展的 NoSQL 数据库。查看 NoSQL 数据库的原因是通过使用水平可扩展的解决方案为未来做好准备。

分布式 NoSQL 数据库通常只提供最终一致性。这是一个多大的问题还有待调查。在这种情况下,我们正在处理一个写入操作相对较少且读取较多且可用性很重要的系统。

有相当多的 NoSQL 数据库系统(cassandra、mongoDB、hbase 等)。是否有任何指南或有文献说明哪些数据库系统适用于哪些情况?我还希望了解发生不一致问题的可能性有多大,以及如何减少这种机会以及成本是多少。

欢迎任何信息/提示/参考文献。

4

1 回答 1

1

那里有大量信息......谷歌是你的朋友:)

我强烈推荐卡桑德拉。它相当容易设置,并且是无主控+容错的。您可以指定每个数据库需要多少复制,它会为您处理。它还可以进行跨数据中心复制。它具有可调的一致性。如果您愿意,对于某些数据位,您可以实现完全一致性(例如,在写入期间牺牲可用性)。因此,这不一定是全有或全无的情况。它具有模式的概念,您将数据作为行存储在表中,并带有主键。它有一种查询语言 CQL,这对 SQL 来说非常熟悉(但更有限)。熟悉度、模式、性能、可调整的一致性……相当不错的组合。

有缺点。没有连接。因此,您必须更多地关注数据建模,并了解实时工作所需的查询类型。概念数据模型可能与实际物理数据模型不同。您可能会有一些信息(即概念数据)作为非规范化物理表中的副本存在。这会带来非常快的性能,但您确实需要稍微了解一下您的数据。

对于分析查询,您通常会将其与 Spark 配对。这将允许您查询您的数据集,就像 Hadoop。查询比实时查询慢,但可以很好地平衡总数据量和查询灵活性。

Cassandra 本身不会是一个全文搜索引擎。但是,将其与 Lucene 或 Solr 配对以提供搜索功能的情况并不少见。

在用例方面,Cassandra 可以以多种形式使用。在最简单的情况下,它是一个键值存储,其中每个值都是有序键值对的集合。顶级键值为您提供数据的分区(分片)。这使您可以非常有效地存储时间序列数据。“值”也支持集合、映射和列表的集合列,您可以在这些上设置“精确匹配索引”。这些允许稍微更灵活的查询。这些特性意味着 Cassandra 可以用于各种各样的用例,但显然不是全部。这实际上取决于您要解决的用例。那里没有单一的“最佳 NOSQL”数据库。每个数据存储往往都有一组用例,很难列出所有映射。相反,你'

于 2014-11-20T17:07:39.753 回答