我需要将数据从postgreSQL移动到NoSQL数据库,在我们评估不同的NoSQL数据库的过程中,Cassandra作为一种可能性出现,但从文档来看,似乎Cassandra不支持将文本数组作为列类型,它是否正确?哪种NoSQL数据库支持这种类型的列并支持此类列的索引?
例如,要存储它并在具有此类数据的列上具有索引:
City:['Washington','Washington DC']
Run Code Online (Sandbox Code Playgroud)
提前致谢!
不完全是你问题的答案(没有足够的声誉来发表评论(?!?)),但了解你的问题是规模,并且你来自 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,您可以指定要在哪些列上进行分发以及通过哪种算法进行分发。我通常通过散列进行分发,并确保两件事,首先散列可以在应用程序端生成,这样我就不必在包含无数行的表上进行联接,其次散列保持跨服务器的分发级别正确的同时还将相关信息保存在同一服务器上,以提高查询的可交付性。也就是说,如果您有一个客户表和一个客户订单表,请将这两个表分布在两个表中的某些客户唯一信息的哈希上,并确保您可以生成该应用程序端。我希望这是有道理的,我不确定我是否解释得很好。如果您想进一步澄清这一点,请告诉我,目前 XC 上的文档有点分散,所以我相关的很多内容都是在职培训 (OJT)。
| 归档时间: |
|
| 查看次数: |
268 次 |
| 最近记录: |