1

我是在 NoSQL 的背景下提出这个问题的——它在不昂贵的情况下实现了可扩展性和性能。

那么,如果我需要实现跨数据库的大规模并行分布式计算……今天(在 RDBMS 范式中)有哪些可用的各种方法来实现具有高可扩展性的分布式计算?

数据库集群和镜像是否对分布式计算有任何贡献?

4

3 回答 3

2

我猜您是在询问 RDBMS 数据库的可扩展性。谈论基于(amazon dynamo、BigTable)的 NoSQL 数据库完全是另一个话题。我说的是HBase,Cassandra等。还有像Oracle Coherence这样的商业产品,它更像是分布式缓存和键值存储,粗略地说。

回到 rdbms,

扩展 RDBMS 的分片可以进行自定义分片。分片是一种技术,您有多个表可能是多个主机。然后您决定以某种方式将某些行分配给某些表。例如,您可以说行 1-1M 进入 table1,1M-2M 进入 table2 等等。但是,从管理的角度来看,这是一个困难的过程。许多大型网站依靠分片进行扩展。其他值得一提的技术是分区和 mysql federation 和 mysql cluster。

MPP 数据库 然后是数据库,非常 RDBMS 可以为您进行分发和扩展。Terradata 是这些公司中最成功的。我相信他们在某些时候使用过 postgres 核心代码。大量财富 500 强公司和许多航空公司都使用 Terradata。但是,它贵得离谱。还有一些较新的公司,如 greenplum、vertica、netezza。

于 2010-11-02T03:58:41.323 回答
1

除非您是一家具有极高可扩展性要求的大公司,否则您可以通过构建相同 RDBMS 实例的集群并将它们与 JTA 事务同步来横向和 ACID 扩展您的数据库。

看看这篇基于 Java/JDBC 的文章,使用了JEPLayer框架,但您可以直接使用 JDBC 和 JTA 代码。

于 2012-12-19T20:48:51.887 回答
0

在 RDBMS 范式中:分片。
在 RDBMS 范式之外:键值存储。

我的选择:(我来自 RDBMS 背景)tabluar 类型的键值存储 - HBase。

在 RDBMS 范式中,分片不会让您走得太远。
使用 RDBMS 范例来设计您的模型,让您的项目启动并运行。
使用表格键值存储进行 SCALE OUT。

分片:

考虑分片的一个好方法是将其视为面向用户帐户的
数据库设计。

用户帐户接触的所有模式实体都保存在一台主机上。

当用户创建帐户时,将用户分配给主机。
负载最少的主机获得该用户。

当该用户在创建帐户后登录时,他会连接
到拥有他的数据的主机。

每个主机都有一组用户帐户。

这种方法的问题在于,如果主机被淹没,
一小部分用户将被黑掉。

对此的解决方案是让一个复制的备用主机
在主主机遇到问题时成为主主机。

此外,对于设计不会发生显着变化的流程来说,这是一个相当严格的设置

从用户的角度来看,我注意到
具有分片数据库后端的网站并没有那么快地“打开一毛钱”
来在其平台上创建不同的业务模型。


将此与具有真正分布式键值存储的网站进行对比。这些企业可以托管任何范围的
服务。他们的平台就是这样——一个平台。
它不是关系型的,它确实有一个 API 接口,
但它似乎可以工作。

于 2012-01-19T18:12:09.827 回答