我在NoSQL的背景下问这个问题 - 它可以实现可扩展性和性能而不会很昂贵。
所以,如果我需要跨数据库实现大规模并行分布式计算...... 目前可用的各种方法(在RDBMS范例内)有哪些方法可以实现具有高可扩展性的分布式计算?
数据库群集&镜像对分布式计算有何贡献?
答案 0 :(得分:2)
我猜你问的是RDBMS数据库的可扩展性。谈论基于(亚马逊发电机,BigTable)的NoSQL数据库是另一个话题。我说的是HBase,Cassandra等。还有像Oracle Coherence这样的商业产品,更像是分布式缓存和密钥值存储,粗略地说。
回到rdbms,
拆分 为了扩展RDBMS,可以进行cusstom分片。分片是一种技术,您有多个表可能是多个主机。然后您以某种方式决定将某些行分配给某些表。例如,您可以说行1-1M转到table1,1M-2M转到table2等。但是,从管理角度来看,这是一个困难的过程。很多大型网站都依赖于分片来扩展。其他值得一提的技术是分区和mysql联合和mysql集群。
MPP数据库 然后有数据库是非常RDBMS,它为您进行分发和扩展。 Terradata是这些公司中最成功的。我相信他们在某些时候使用了postgres核心代码。大量财富500强企业和很多航空公司都使用Terradata。但是,它的价格非常昂贵。还有更新的公司,如greenplum,vertica,netezza。
答案 1 :(得分:1)
除非您是一家具有极高可扩展性要求的大公司,否则您可以通过构建一组相同的RDBMS实例并将它们与JTA事务同步来横向和ACID扩展您的数据库。
答案 2 :(得分:0)
在RDBMS范例内:Sharding 在RDBMS范例之外:键值存储。
我的选择:(我来自RDBMS背景)tabluar类型的键值存储 - HBase。
在RDBMS范例中,分片不会让你走得太远 使用RDBMS范例设计模型,使项目正常运行 使用表格键值存储到SCALE OUT。
Sharding:
考虑分片的一个好方法是将其视为面向用户帐户的 数据库设计。
用户帐户触及的所有架构实体都保留在一台主机上。
当用户创建帐户时,会将用户分配给主机 负载最少的主机获得该用户。
当该用户在帐户创建后登录时,他将获得连接 到拥有他数据的主机。
每个主机都有一组用户帐户。
这种方法的问题在于,如果主机被软管,则 一小部分用户将被淘汰。
解决方案是拥有一个复制的备用主机 在主要主机遇到问题时成为主要的。
此外,对于设计实施的流程来说,这是一个相当严格的设置 没有太大变化。
从用户的角度来看,我注意到网站为 使用分片数据库后端并不像“开启一角钱”那么快 在他们的平台上创建不同的商业模式。
将此与真正分布的网站对比
键值商店。这些企业可以容纳任何范围的
服务。他们的平台只是一个平台
它不是关系型的,它有一个API接口,
但它似乎有效。