假设我们正在构建一个用于存储来自网站或移动应用程序的分析的数据库。 交易不重要(可以放弃)并且只会减慢速度,支持尽可能多的并发调用,一致性可能是最终的,而部分数据将是非结构化的(即用户可以将随机JSON blob作为参数传递给我们将存储在数据库中的分析日志记录调用。)
像Mongo这样的东西对于它来说是一个合理的选择,因为它确实满足了我上面列出的大多数要求。然而,人们常常听说Postgres可以自定义以填充许多不同的角色。我想可以禁用交易等。我对Postgres设置不是很熟悉,因此我必须问:实际上是否有可能使Postgres适应我上面列出的要求?
答案 0 :(得分:5)
你必须尝试一下/做一些调整,看看它是否符合你的性能需求。但是,Postgres内置支持透明地存储大型列值(最高1GB),有效称为TOAST(自7.1起)。 Postgres即服务提供商Heroku利用其提供的“文档存储”功能,使用他们的hstore非结构化文本Postgres数据类型 - 该页面包含来自hstore采用者的示例应用程序。至于调优,我认为Postgres 9.0 High Performance对于不熟悉postgres的人来说是一个很好的参考,可以找出按主题在Postgres在线文档中查找的位置。为了完整起见,Postgres有一个large object API可以处理高达2GB的对象,但是这比使用像TOAST这样的透明解决方案更难以迁移到另一个RDBMS。