【问题标题】:Choosing a NoSQL database选择 NoSQL 数据库
【发布时间】:2015-01-22 00:32:17
【问题描述】:

我需要一个可以在 Windows Azure 上运行的 NoSQL 数据库,该数据库适用于以下参数。目前,Azure 表存储、HBase 和 Cassandra 似乎是最有希望的选择。

  • 10 亿个实体
  • 每秒最多 100 次读取,但缓存会大大减少读取次数
  • 每秒大约 10 - 50 次写入

强一致性将是一个加分项,因此 HBase 在这方面可能会比 Cassandra 更好。

查询通常在具有各种索引的辅助内存数据库上完成,此外还有 ElasticSearch 或 Windows Azure Search 以进行全文搜索和一些过滤。

Azure 表存储看起来不错,但据我所知,Azure 表存储和 HBase 之间的最大区别在于 HBase 支持更新和读取单个属性的值,而不是同时读取整个实体的值。我想 HBase 肯定有一些缺点,但我不确定在这种情况下它们会是什么。

我也认为 crate.io 看起来可能很有趣,但我想知道是否会出现无法预料的问题。

在这种情况下,任何人对不同数据库的优缺点有任何其他想法,是否有任何一个出于某种原因真的不适合?

【问题讨论】:

  • 你考虑过 MySQL 吗?
  • 嗨,crate dev 在这里,所以我显然有偏见,但我认为 crate 可以很好地处理你的用例。尽管我不确定您对一致性的要求是什么。但您可以阅读crate.io/docs/en/latest/storage_consistency.html 并自行判断。
  • 我想我至少会在 SQL 中存储一些数据。板条箱看起来很有趣,我会更多地研究它。虽然目前看起来它可能有点太不成熟,而且没有多少人在使用它,但我正在考虑是否可以尝试一些不太重要的数据。
  • 最近的 Crate SnowSprint 围绕 Windows 和 Azure 做了很多工作。如果您想了解更多信息,请给我留言。

标签: cassandra azure-table-storage crate nosql


【解决方案1】:

我目前与 Cassandra 合作,我可能会在一些利弊方面提供帮助。

要求

Cassandra 可以轻松处理这 3 个要求。它旨在具有快速读取和写入功能。事实上,Cassandra 的写入速度非常快,主要是因为您无需读取即可写入。

此外,Cassandra 将一些数据保存在内存中,因此您甚至可以避免使用辅助数据库。

一致性

在 Cassandra 中,您可以在每个查询中选择一致性,因此您可以根据需要获得一致的数据。通常你使用:

  • ONE - 只有一个节点必须获取或接受更改。这意味着读取/写入速度快,但一致性低(您可以让其他机器在未实现一致性的情况下提供较旧的信息)。

  • QUORUM - 51% 的节点必须获得或接受更改。这意味着读取和写入速度不快,但是如果您在读取和写入中都使用它,您将获得完全的一致性。那是因为如果在插入/更新/删除后有超过一半的节点有数据,那么当从超过一半的节点读取数据时,至少有一个节点将拥有最新的信息,这将是要传递的信息.

这两个选项都是推荐的,因为它们可以避免单点故障。如果所有机器都必须接受,如果一个节点宕机或忙碌,您将无法查询。

优点

Cassandra 是性能、线性可扩展性和避免单点故障的解决方案(您可以让机器停机,其他人将承担工作)。它的大部分管理工作都是自动完成的。您无需管理数据分发、复制等。

缺点

Cassandra 的缺点在于建模和查询。

使用关系数据库,您可以围绕实体及其之间的关系进行建模。通常,您并不真正关心将进行哪些查询,而是努力对其进行规范化。

Cassandra 的策略有所不同。您对表进行建模以服务于查询。发生这种情况是因为您无法加入,也无法以任何您想要的方式过滤数据(仅通过其主键)。 因此,如果您有一个拥有杂货店的公司的数据库,并且您想要进行查询以返回某个商店(例如:纽约市)的所有产品,并进行另一个查询以返回某个部门的所有产品(例如。 :计算机),您将拥有两个表“ProductsByStore”和“ProductsByDepartment”,它们的数据相同,但组织方式不同以服务于查询。

物化视图可以帮助解决这个问题,避免在多个表中进行更改,但它是为了展示 Cassandra 的工作方式有何不同。

出于同样的原因,非规范化在 Cassandra 中也很常见:性能。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    相关资源
    最近更新 更多