Postgresql JSONB 即将到来。现在该用什么?商店? JSON? EAV?

2023-12-31

在经历了关系型 DB/NoSQL 研究辩论之后,我得出的结论是我将继续使用 PG 作为我的数据存储。该决定的一个重要部分是宣布 JSONB 即将推出 9.4。我的问题是我现在应该做什么,从头开始构建一个应用程序,知道我想迁移到(我的意思是立即使用!)jsonb?我的 DaaS 选项将运行 9.3 一段时间。

据我所知,如果我错了请纠正我,hstore 会运行得更快一些,因为我将对 hstore 列中的许多键进行大量查询,如果我要使用纯 json,我不会无法利用索引/GIN 等。但是我可以利用 json 嵌套,但运行任何查询都会非常慢,用户会感到沮丧。

那么,我是否围绕当前版本的 hstore 或 json 数据类型、“good ol”EAV 或其他内容构建我的应用程序?我应该以某种方式构建我的数据库和应用程序代码吗?任何建议将不胜感激。我相信在我们等待 PostgreSQL 的下一个正式版本时,其他人可能会面临同样的问题。

关于我想要构建的应用程序的一些额外细节:

- 非常相关(下面有一个例外)
-强大的社交网络方面(群组、朋友、喜欢、时间线等)
-基于具有可变用户分配属性的单个对象,可能有 10 个或 1000 个以上(这是无模式设计需求发挥作用的地方)

预先感谢您的任何意见!


这取决于。如果您期望拥有大量用户、非常高的事务量或每个查询的属性获取数量惊人,我会建议使用 HSTORE。但是,如果您的应用程序从小规模开始并随着时间的推移而增长,或者获取属性的事务相对较少,或者每次查询只获取一些属性,那么请使用 JSON。即使在后一种情况下,如果您没有获取许多属性,而是经常检查一个或两个键WHERE查询的子句中,您可以创建一个功能索引来加快速度:

CREATE INDEX idx_foo_somekey ON foo((bar ->> 'somekey'));

现在,当你有WHERE bar ->> somekey,它应该使用索引。

当然,使用嵌套数据并在可用时升级到 jsonb 会更容易。

因此,我会倾向于 JSON,除非您确定在有机会升级到 9.4 之前,您会因为大量使用密钥获取而让服务器崩溃。但为了确定这一点,我想说,现在就对预期查询量进行一些基准测试,看看什么最适合您。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Postgresql JSONB 即将到来。现在该用什么?商店? JSON? EAV? 的相关文章

随机推荐

  • 为 Python 函数参数提供额外装饰/元数据的好方法是什么?

    我们正在考虑使用 Python IronPython 但我认为这不相关 为另一个控制设备的应用程序提供某种 宏 支持 我们想用 Python 编写相当简单的函数 它需要一些参数 比如时间 温度和位置 不同的函数将采用不同的参数 主应用程序将
  • 如何从 postgresql sql 表中删除重复行

    date window points actual bool previous bool creation time source 2021 02 11 110 0 6 0 0 2021 02 14 09
  • 无法安装 rvest 软件包

    我需要安装 R 版本 3 1 2 的 rvest 包 2014 10 31 我收到这些错误 checking whether the C compiler supports the long long type no stringi can
  • 背景图像在 iPad 和 iPhone 上不显示

    我想在移动网页中创建一个带有背景的部分 因此我使用了以下 CSS 代码 section1 background url background1 png auto 749px height 749px 背景在 Android Chrome F
  • Angular DatePicker - 多个指令 > [datepicker, datepicker]

    我正在尝试使用 720Kb 日期选择器 https github com 720kb angular datepicker https github com 720kb angular datepicker 使用简单的示例时
  • 如何在批处理文件中提及 C:\Program Files

    我需要从批处理文件调用 C Program Files 目录中的 exe 文件 我们如何在批处理文件中提及目录名称 Program Files 我收到类似 C Program not found 的错误 我认为需要在中间添加 或 但无法得到
  • C# 中的文件和文件夹的递归列表[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我编写此代码是为了在 C 中递归列出文件和文件夹 var filesInTheCurrentDirectory System IO Direct
  • curl 与浏览器的结果不同

    我正在尝试使用curl 从命令行下载以下URL 如果通过浏览器请求相同的 URL 则能够获取图像 但对于curl 服务器终止SSL握手 只是为了使用完全相同的参数 我尝试了 google chrome 和 firefox 的 开发人员工具
  • Rails - 使用 ruby​​gems 安装电子表格 gem 时出错

    我希望能够在 Rails 中处理 Excel 电子表格 所以我正在使用spreadsheet图书馆 但是 当我使用 ruby gems 安装电子表格时 出现异常 Successfully installed spreadsheet 0 7
  • 通过提供邮政编码获取位置名称

    当用户输入邮政编码时 我需要显示位置和城市名称 如何获取对应的位置名称 我会使用像这样的网站 http www zipinfo com search zipcode htm http www zipinfo com search zipco
  • WPF WebBrowser 控件是否支持放大/缩小?

    对于 WPF WebBrowser 控件 有没有办法复制 Internet Explorer 的缩放功能 换句话说 Internet Explorer 具有菜单 视图 gt 缩放 gt 75 可以以 75 的比例呈现网页 有没有办法让嵌入在
  • Android 视图转换动画列表?

    是否有可用于在两个视图之间转换的所有动画的列表 IE 缩放 滑动 脸部等 我似乎无法在 SDK 中或通过搜索 Google 找到完整的列表 此外 是否有任何演示应用程序可以显示所有这些内容 以便我可以评估哪个最适合特定用例 无法创建完整的动
  • 将对象列表作为外键

    如果我有两节课 public class Event public int EventId get set public string EventName get set and public class Dog public int Do
  • 如何验证对 PHP 文件的 AJAX 请求?

    在我的网站上 我有一个注册页面 该页面会发出 AJAX 请求来检查用户名输入后是否可用 该文件名为 check php 与 Registration php 文件位于同一目录中 当数据发布到 check php 时 它将在 MySQL 数据
  • 您网站上的多个 signalR 连接/集线器

    如果我有多个页面可以使用多个集线器类 那么管理此问题的最佳方法是什么 例如 导航到网站中的另一个页面并本质上 重新打开 与上一页上打开的同一集线器类的连接是否不好 我是否正确地认为在一个页面上打开多个集线器连接是可以的 因为它们都统一在一个
  • 如何开始对新旧代码进行单元测试?

    我承认我几乎没有单元测试的经验 我不久前尝试过 DUnit 但放弃了 因为我的应用程序中的类之间存在太多依赖关系 这是一个相当大的 大约 150 万行源代码 Delphi 应用程序 我们是一个维护它的团队 目前的测试是由一个在发布之前使用它
  • SupportMapFragment 不支持 AndroidX Fragment

    import com google android gms maps SupportMapFragment import androidx fragment Fragment private SupportMapFragment mMapF
  • 如何使用python删除循环列表的元素直到只剩下一个元素? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我将如何迭代从 1 到 100 的列表 删除从第一个元素开始的所有其他元素 然后重复该步骤 直到列表中只剩下一个元素 我是否必须使用循
  • 文件名中包含两个句点的 htaccess 正则表达式

    我现在有这个表达式 需要site com index php to site com index RewriteCond SCRIPT FILENAME d RewriteRule 1 php NC L 我需要让它接受包含两个句点的文件名
  • Postgresql JSONB 即将到来。现在该用什么?商店? JSON? EAV?

    在经历了关系型 DB NoSQL 研究辩论之后 我得出的结论是我将继续使用 PG 作为我的数据存储 该决定的一个重要部分是宣布 JSONB 即将推出 9 4 我的问题是我现在应该做什么 从头开始构建一个应用程序 知道我想迁移到 我的意思是立