- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
您好,我正在从系统设计的角度学习 NoSQL 数据库的功能,并且还了解到很多大公司使用分片 RDBMS 而不是那些 nosql 数据库来保存数据。
这是否表明 NoSQL 数据(Cassandra/MongoDB)的唯一优势是因为它是现成的分布式解决方案并且维护成本低廉?
最佳答案
read that a lot of big companies use shard rmdb
在我的上一份工作中,我的组织支持手动分片的 Postgres 解决方案。这给我们带来了巨大的痛苦,因为它的规模很大,很难管理和维护。请记住,RDBMS 并不是真正设计为以这种方式工作的。
only advantage of nosql ... is because it's an off-the shelf distributed solution
这个决定实际上就是权衡。当您的数据工作负载无法由单个数据库实例处理或者您需要无单点故障的正常运行时间时,NoSQL 可以为您提供帮助。为了分区容错性和可用性而牺牲一致性的数据库(“AP”数据库)通常能够以很小的延迟处理大量工作负载,因为它们能够将数据(以及查询)传播到多个服务器实例。
此外,如果您的数据需要具有地理或数据中心意识,您将需要一个支持该功能的数据库。试图让数据库产品以其原始设计未考虑到的方式工作会带来痛苦。
cheap to maintain
询问任何经营企业数据库组织的人,他们都会告诉您 NoSQL 维护起来并不便宜(或容易)。当然,您可能会获得不必“购买”的开源产品,但您将需要(通常是高薪)数据库工程师来维护它。
scalability comes along with nosql by design, but it also seems that sql can also achieve the same and the primary issue is only the maintenance/configuration when scaling it up.
这要看情况。您计划扩展到多大,需要支持多少个数据副本?像 Apple 这样的大型企业拥有数千台运行 Apache Cassandra 的服务器。他们这样做是因为 iCloud 需要扩展才能满足 9 亿 iPhone 用户的需求。他们可以根据计算资源的需求轻松添加(扩大)或删除(缩小)。
与 Cassandra (NoSQL) 相比,使用关系数据库实现这种级别的可扩展性需要做更多的工作。当您发现需要进一步扩展时,您基本上会考虑数据重新加载场景(因为分片大小本质上发生了变化)以将数据获取到新实例。数据库团队将(很快)达到扩展 RDBMS 所需的工作量不切实际的地步。
另一方面,客户端应用程序如何知道哪个关系数据库服务器发送查询?对于大多数关系数据库,您最终将不得不以某种方式构建或增强该逻辑层。当数据库实例的数量发生变化时,您也需要应用程序了解这一点。 NoSQL 数据库负责节点发现,并且(大多数)对其进行抽象,因此客户端应用程序无需担心它。
还请记住,并非所有 NoSQL 数据库都是平等创建的。在某些产品上,只有某些节点才会接受写入。在某些产品上,任何节点都可以处理读取或写入。关系数据库对此没有任何概念,因此您也必须考虑到这一点。
tl;博士;
由于扩展,它比单纯的维护要复杂得多。如果不是,每个主要的关系数据库都会有一个简单的方法来处理这个问题,NoSQL DB 将变得无关紧要。但这并没有发生。
关于mongodb - NoSQL(Cassandra/Mongodb)与 RDBMS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70868303/
我们有 2 个 cassandra 集群,第一个有旧数据,第二个有新数据。 现在我们想要将旧数据从第一个集群移动或复制到第二个集群。什么是最好的方法来做到这一点以及如何做到这一点? 我们正在使用 DS
我正在考虑安装 OpsCenter 来监控我们在 RackSpace VM 上运行的 24 节点 Cassandra 集群。过去我听说 OpsCenter 减慢了集群速度。我有点担心 OpsCente
假设我有一个复制因子(RF)= 2 的 2 节点集群。 我使用一致性 2 触发插入。当客户端等待响应时,Cassandra 开始写入这 2 个节点。中间一个节点失败,无法完成写入,而另一节点上的写入成
已结束。此问题正在寻求书籍、工具、软件库等的推荐。它不满足 Stack Overflow guidelines 。目前不接受答案。 我们不允许提出寻求书籍、工具、软件库等推荐的问题。您可以编辑问题,以
我在 Cassandra 中有一个表,其中我用 1000 多个条目填充了一些行(每行有 10000 多列)。行中的条目更新非常频繁,基本上只是一个字段(它是一个整数)被更新为不同的值。列的所有其他值保
当Cassandra端有“掉落的突变”时,它是否向调用客户端返回相应的失败?或者即使在服务器端丢弃相应的突变并导致数据丢失,它总是成功响应调用事务的调用客户端? 在一个特定实例中,当我们的 TPS 约
我有一个 Multi-Tenancy 应用程序,其中 tenantId 将成为每个查询的一部分,因此我将其放入所有表的分区键中。 例子: CREATE TABLE users { tenantId t
根据 Datastax 文档,在 Cassandra 中先读后写是一种反模式。 每当我们在 CQLSH 中使用 UPDATE 或使用 Datastax 驱动程序来设置几列(带有 IF 和集合更新)时,
是否有命令或任何方式可以知道 Cassandra 的哪些节点上存储了哪些数据? 我对 Cassandra 很陌生,在谷歌上搜索这个问题并没有多少运气。 谢谢! 最佳答案 您可以使用 nodetool
我们有一个包含 1500 万条记录的表,而我们的表是一个 10 节点的 cassandra 集群。我们有一列有接近 20 个可重复值。是否建议在此列上建立二级索引? 最佳答案 假设在该列上完全均匀分布
Cassandra 发布了它的 technical limitations但没有提到允许的最大列数。是否有最大列数?我需要存储 400 多个字段。这在 Cassandra 中可能吗? 最佳答案 每行的
我想知道当表中有多个非 PK 列时会发生什么。我读过这个例子: http://johnsanda.blogspot.co.uk/2012/10/why-i-am-ready-to-move-to-cq
我有两个关于 Cassandra 查询结果的问题。 当我在 Cassandra 中对表进行“完全”选择(即 select * from table )时,是否保证结果将按分区标记的递增顺序返回? 例如
我无法为 Cassandra 设置 Hector。我已经浏览了 documentation和 Cassandra wiki .这些文档的问题在于,那里的很多信息都已经过时或过时(或者我缺乏知识)。无论
我正在使用 DataStax Enterprise 中 cassandra 中提供的压力测试。如果有人知道的话,我也想要一些关于它和 cassandra 的信息。 - 首先,压力测试使用哪些节点?我的
当我在 CQL 中创建表时,列的顺序是否必须精确 不是 在主键和 中不是 聚类列: CREATE TABLE user ( a ascii, b ascii, c ascii,
我有一张如下表: CREATE TABLE tab( categoryid text, id text, name text, author text, des
我正在尝试学习 Cassandra,但对术语感到困惑。 很多情况下它表示该行存储键/值对。 但是,当我定义一个表时,它更像是声明一个 SQL 表,即;您创建一个表并指定列名和数据类型。 谁能澄清一下?
如何对 cassandra 数据实现审计? 我正在寻找一个开源选项。 cassandra 是否有任何有助于审计的功能? 我可以使用触发器将记录记录到表中吗?我关注了 Triggers示例并且能够将记录
我遇到了一个问题“me.prettyprint.hector.api.exceptions.HUnavailableException:: 可能没有足够的副本来处理一致性级别。”当我有 RF=1 时,
我是一名优秀的程序员,十分优秀!