我同意你的资源有效利用技术(如果它们有限)。但另一方面,系统最终可能会非常健谈。如果我理解正确,您的“连接”文档设计过于细化,可能会在网络中引入太多I / O.根据我的经验,如果您正在设计一个能够做出实时决策的系统,那么这些网络I / O非常昂贵。您可以在数学上估计这些不同选择对平衡这些对立力量的影响:)
我确实认为可扩展的大数据系统的精神是我们会对资源“约束”“减少”。这些no-sql数据库许可证不是通过CPU核心进行的。商品硬件很便宜。在我们讨论时,RAM越来越便宜。再一次,这些系统的投资回报也会影响架构决策。
感谢您更新原始问题。当你谈到在粗粒度文档和细粒度文档之间找到正确的平衡时,你是对的。
文档的最终体系结构实际上属于您特定的业务领域需求。您必须在用例中确定整体需要的“数据块”,然后将存储的文档形状基于此。 以下是设计文档结构时需要执行的一些高级步骤:
确定您的应用/服务的所有文档消费用例。 (读,读,可搜索的项目) 设计你的文件(最有可能的是你会得到几个较小的文件而不是一个拥有一切的大文档) 设计可以在一个存储桶中共存的文档密钥,以用于不同的文档类型(例如,在密钥值中使用命名空间) 根据您的使用案例对结果模型进行“干运行”以查看您对noSQL和所有事务的最佳(读/写)事务 在交易中需要的文件数据。 针对您的用例运行性能测试(尝试模拟预期负载至少高2倍) 醇>
的 注意: 强> 当您设计不同的文档时,可以使用某种冗余(请记住它不是具有规范化形式的RDBMS),将其更多地视为面向对象设计。
的 笔记2: 强> 如果您的密钥之外有可搜索的项目(例如,按姓氏搜索客户“以”开头“和其他一些动态搜索条件),请考虑使用ElasticSearch与CB集成,或者您也可以尝试使用CB3.0附带的N1QL查询语言。
看起来你正朝着正确的方向前进,分成几个由MSISDN链接的小文档,例如:MSISDN:profile,MSISDN:revenue,MSISDN:optin。我会特别注意你的最后一个文件类型“A / B”连接。听起来它可能会产生大量的并且在本质上是瞬态的...所以你必须找出这些文件必须存在多久才能在Couchbase桶中存活。您可以指定TTL(生存时间),以便自动清除旧文档。