sno*_*ndy 5 key-value nosql key-value-store
我将描述数据和案例。
record {
customerId: "id", <---- indexed
binaryData: "data" <---- not indexed
}
Run Code Online (Sandbox Code Playgroud)
期望:
我们尝试过的:
我们在 AWS RDS MariaDB 的关系数据库中实施了这种方法。服务器为 32GB RAM,2TB GP2 SSD,8 个 CPU。发现IOPS使用率高,插入速度不理想。经过调查,我得出结论,由于 customerId 的随机性,对索引的不同写入率很高。在此之后,我做了以下事情:
即使这样,我每小时也不能进行超过 1-3M 的记录写入。测试了不同的写入并发数,当前值为 4 个并发写入器。在所有修改之后,尚不清楚我们还可以改进什么:
显然,ACID 原则阻碍了我们。我正在寻找完全可扩展的键值存储,很高兴听到任何想法和粗略估计。
所以如果我理解你...
这在 NoSQL 中是完全可行的。
规模不是问题。这是你的成本。
1 TB 数据每月 1 千美元听起来是一个合理的目标。我只是不认为公共云已经完全存在。
让我举一个例子来说明我的建议:Scylla Cloud 和 Scylla Open Source。(披露:我为 ScyllaDB 工作。)
我会告诫您,您每月 1000 美元的成本费用可能会导致您考虑并做出一些权衡。
正如高可用性部署中的典型情况一样,为了确保节点故障时的数据冗余,您可以在 AWS 上使用 3 个 i3.2xlarge 实例(每个实例可以存储 1.9 TB)。
您需要额外的容量来运行压缩。我们使用增量压缩,这可以节省空间放大,但您不希望使用 i3.xlarge(每个 0.9 tb),除非真的有成本压力,否则它低于 1 tb 的限制。在这种情况下,您必须执行某种数据驱逐(如 TTL)以将数据保持在 <600 gb 左右。
即使 Scylla Cloud(参见此处:https : //www.scylladb.com/product/scylla-cloud/#pricing)的年度保留价格为764.60 美元/服务器,运行三个 i3.2xlarge 的费用为 2,293.80 美元/月。是预算的两倍多。
现在,如果您避开托管服务,并希望运行自助服务,您可以使用 Scylla Open Source,只需查看按需实例定价(请参阅此处:https : //aws.amazon.com/ec2/pricing /按需/)。对于 3 个 i3.2xlarge,您每个运行的费用为 0.624 美元/小时。这是每个 449.28 美元的原始按需成本,其中不包括备份、数据传输等杂项。但您可以获得 1,347.84 美元的三个实例。开源。没有管理。
仍然超出您的预算,但更接近。如果你能得到保留的价格,那可能就成功了。
编辑:找到保留价格:
3x i3.2xlarge 会花费你
因此,备份、监控和其他成本再次高于此。但是您应该能够使原始服务器成本 <1,000 美元来满足使用 Scylla Open Source 的需求。
但是管理负担在您的团队身上(而且他们的时间并不是完全零成本)。
例如,如果您想对系统进行监控,则需要设置 Prometheus、Grafana 或 Datadog 之类的东西。那将是其他服务器或服务,它们不是免费的。(我们团队的备份和监控费用由 Scylla Cloud 承担。服务费用的一部分。)
另一种省钱的方法是只做 2 次复制。如果您丢失服务器,这会将您的数据置于真正有风险的地方。这是不推荐使用。
所有这些都基于对您的数据的最大假设。你的记录大约是 2k(不是 1k)。您没有从 ScyllaDB 内置的数据压缩中获得太多效用 - 参见第一部分 ( https://www.scylladb.com/2019/10/04/compression-in-scylla-part-one/ )第二部分(https://www.scylladb.com/2019/10/07/compression-in-scylla-part-two/)。
在我看来,如果您选择保留定价和开源,您应该能够以 1000 美元/月的预算完成。虽然增加监控和备份以及其他附带成本(我没有在这里计算)可能会让你再次回到这个数字上。
否则,在完全托管的云企业套餐中,每月 230 美元,您可以在晚上轻松入睡。