postgresql - 可以使用 Postgres 作为文档数据库吗?

标签 postgresql postgresql-9.1 postgresql-9.2 document-database

假设我们正在构建一个数据库,用于存储来自网站或移动应用程序的分析数据。 事务并不重要(丢掉东西没关系),只会减慢速度,支持尽可能多的并发调用,一致性是最终的,部分数据将是非结构化的(即用户可以将随机 JSON blob 作为参数传递给分析日志记录调用,我们将其存储在数据库中)。

像 Mongo 这样的东西是一个合理的选择,因为它确实满足了我上面列出的大部分要求。然而,人们确实经常听说 Postgres 具有可定制性以填补许多不同角色的能力。我想可以禁用事务等。

我对 Postgres 设置不是很熟悉,因此我必须问:实际上是否可以调整 Postgres 以满足我上面列出的要求?

最佳答案

您必须尝试一下/进行一些调整,看看它是否满足您的性能需求。但是,Postgres 内置了对透明存储大列值(最多 1GB)的有效调用 TOAST 的支持。 (自 7.1 起)。 Postgres 即服务提供商 Heroku利用这一点,使用他们的 hstore 非结构化文本 Postgres 数据类型提供“文档存储”功能——该页面有来自 hstore 采纳者的示例应用程序。至于调整,我认为Postgres 9.0 High Performance对于不熟悉 postgres 的人来说是很好的引用,可以按主题找出在 Postgres 在线文档中的位置。为了完整起见,Postgres 有一个 large object API最多可以处理 2GB 的对象,但这会使迁移到另一个 RDBMS 比使用 TOAST 等透明解决方案更加困难。

关于postgresql - 可以使用 Postgres 作为文档数据库吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14446684/

相关文章:

postgresql - 自动更新

postgresql - '绑定(bind)消息提供 1 个参数,但准备好的语句 ""在 Node 中需要 5 个'

java - 仅允许通过 sql server 、 oracle 和 postgres 中的 jdbc 对表进行更新

postgresql - 约束 xxxxxxx 不是外键约束

postgresql - 优化 PostGIS 查询,ST_Intersects

postgresql - postgres 中的字母数字大小写不敏感排序

postgresql-9.1 - 如何显示 PostgreSQL 系统变量

postgresql - 连接 2 个表,其中两组数字在连接列中重叠

database - EXECUTE <query-string> USING value1... 在第一个替换占位符 ($1) 上阻塞

postgresql - 如何知道 Postgresql 服务器在什么操作系统/平台上运行?