2

我有一个现有的关系 Postgresql 数据库。一些表包含非常大的 blob,它们会比 NoSQL 文档好得多。这将大大减轻我们的关系数据库。

因此,我们考虑将这些 blob 表移到 CosmosDB 或 MongoDB 等 NoSQL 解决方案中。但是,纯粹的关系表存在外键依赖关系,这使得将这些表移出到它们自己的数据库中变得复杂。

我发现 PSQL 原生支持存储文档并且可以分发。到目前为止,我看到的解决方案是 CitusData 和 Postgres XL。对于那些使用过的人,他们如何比较?

有没有人遇到过类似的情况?您是否分离到 NoSQL 数据库中?或者是否有人将他们的 PSQL 划分为关系和 NoSQL 部分?那是怎么回事?事后你会建议注意什么?

4

2 回答 2

5

(这里是 Citus 工程师)

Postgres 具有强大而灵活的 JSONB 列类型。您可以做的是保持结构表不变,并为 blob 数据放置一个 jsonb 列。使用单节点 Postgres 进行测试,如果这对您有用,那就太好了!

如果您的数据规模存在问题,即单台机器的内存或存储或 CPU 不足以满足您的工作量,并且您无法扩大规模,那么您可以尝试使用 Citus 或 Postgres-XL 进行横向扩展。

我没有使用 Postgres-XL 的经验,但 Citus 很容易尝试。您可以使用 docker 映像,或者您可以在Citus Cloud上创建一个帐户来尝试 1 周的免费开发计划(它不适合用于基准测试)。

于 2017-10-17T06:56:28.000 回答
0

每个 RDBMS->NoSQL 迁移都需要以下两者之一: 1. 将这些依赖文档中的一些嵌入到用户实际查询的文档中 2. 通过 id 引用依赖文档并在读取时推断这些关系。

很典型,每个人每天都在做,不要害怕。顺便说一句,您不必在 Cosmos DB 和 MongoDB 之间做出选择 - 只需将 Cosmos DB 与 MongoDB API 一起使用。

于 2017-10-16T19:35:04.430 回答