5

我需要将数据从 postgreSQL 移动到 NoSQL 数据库,在此过程中,我们正在评估不同的 NoSQL 数据库,Cassandra 是一种可能性,但从文档看来,Cassandra 不支持将文本数组作为列类型,这个对吗?哪些 NoSQL 数据库支持此类列并支持此类列的索引?

例如,要存储它并在具有此类数据的列上建立索引:

City:['Washington','Washington DC']

提前致谢!

4

1 回答 1

1

不完全是您问题的答案(没有足够的声誉来评论(?!?)),但了解您的问题是规模,并且您来自 PostgreSQL,您是否尝试过 PostgresXC?这可能比向 NoSQL 过渡要容易得多。我假设您知道,NoSQL 数据库具有非常不同的性能特征和细微差别,实际上可能弊大于利。Postgres-XC 是 PostgreSQL 的多主可写可扩展分支,从 PostgreSQL 功能的角度来看,它位于 9.1 和 9.2 之间,它是一个活跃的项目。如果我没记错的话,9.2 的一致性定于本月或最后一次。设置它相对容易 - 您将构建 2 个 GTM,一个作为主,一个作为故障转移,给它们足够的内存。然后您可以通过添加协调器和数据节点对来水平扩展,每台服务器 1 个协调器和 1 个数据节点。您的应用程序层可以与任何协调器通信,事务被传送到适当的协调器,您可以按表指定数据的分布——为小型参考表复制或为大型参考表分布。如果您设计好查询,您可以获得巨大的性能提升,因为您的查询可以在多个协调器/数据节点对上同时传送和执行。

我知道你在寻找 NoSQL,但我提到这一点是因为我们也有垂直与水平规模的问题,最后我发现将 NoSQL 功能构建到关系系统中比将关系能力构建到 NoSQL 系统中更容易. 当然,这一切都取决于您的数据,有时 NoSQL 绝对是最佳选择。有时它也可能是一个令人头疼的问题,例如,一些 NoSQL 数据库在文件系统增长方面存在问题,所以当你认为你购买了水平可扩展性时,你最终会在家里和家里吃掉你的 SAN。

无论如何,希望有帮助!我会把它作为评论留下来,但 stackoverflow 的名声很奇怪。

我也忘了提一下,使用 Postgres-XC,您可以指定要在哪些列上分发以及使用哪种算法。我通常通过散列进行分发,并确保两件事,首先,可以在应用程序端生成散列,这样我就不必在数以万计的行的表上进行连接,其次,散列保持跨服务器的分布级别正确,但同时也将相关信息保存在同一服务器上,以增加查询的可交付性。也就是说,如果您有一个客户表和一个客户订单表,请在两个表中的一些客户唯一信息的散列上分发它们,并确保您可以生成该应用程序端。我希望这是有道理的,我不确定我是否做得很好。

于 2013-06-15T06:07:03.703 回答