JSON 与 MariaDB 平台

什么是 JSON 以及为什么使用它?

JSON正在迅速成为数据交换和非结构化数据的标准格式,JSON 数据类型尚未实现有几个充分的理由,但其中一个原因是它没有太多优点,因为 JSON 是一种基于文本的格式。在这里,我将描述 JSON 及其用例以及 MariaDB JSON 函数及其用途。我们还将了解一些对 JSON 处理有用的其他 MariaDB 功能。

首先,为什么我们需要 JSON?或者换句话来说,为什么我们不将所有数据存储在 JSON 中?嗯,在我看来,原因是我们使用的某些数据实际上最好被视为无模式,而其他数据确实应该在模式中更严格地处理。在我看来,这意味着将关系数据与非结构化数据混合才是我们真正想要的。(有关 JSON 函数的更多详细信息,包括示例数据和查询,

对非结构化数据使用 JSON 相当简洁,而且 JSON 甚至是标准化的。但情况并非总是如此。当写这篇文章的那个可悲的老家伙开始在这个行业工作时(我认为是在哈丁政府期间),计算机很稀有,昂贵,只能由专家处理(所以我如何与它们一起工作是一个谜)并建造了计算机。来自乐高积木、Meccano 和纯金(以维持价格)。此外,它们的力量就像滑尺一样,只不过它们是用打孔卡喂食的(可能是由蒸汽驱动的)。

不管怎样,没有一个头脑正常的人会认为可爱的猫科动物的字符串图片可以存储在计算机上,或者实际上可以存储在数据库中。适合的小东西是真正重要的东西,比如价格、库存数量、客户姓名、帐单地址等等——仅此而已。不仅如此,存储的东西在某种程度上具有某种价值,这意味着它必须遵循某些规则。(遵守规则是我擅长的事情?我再次想知道我是如何进入这个行业的。)比如,价格必须是某种数字,其值为 0 或更高,并有一些其他限制。正如你所看到的,这是一段艰难而无情的时期。

然后时间过去了,人们开始在互联网上买东西(不管互联网是什么——我认为它是某种美化的、时尚的打孔卡版本),Facebook 和 Google 等东西出现了。计算机存储的问题现在不是如何将所有结构良好的数据放入其中,而是一旦我们将桌面上的硬盘驱动器充满了来自亚马逊的所有产品、客户和交易(我认为亚马逊有一些事情要做)与互联网,但我不确定),并且该驱动器的 17.85% 现在被旧式结构化数据占用,我们还放在那里什么呢?也许我们可以添加一些有关该数据库中待售商品的更多信息,以及一些有关谁购买这些商品的一般信息?这应该能很好地填满该磁盘,对吗?嗯,是的,但是新数据,

举个例子,你在经历了大量的“聚会”(我认为这不是互联网的事情)之后,在凌晨在亚马逊上写了一篇产品评论,其中的内容很难被认为是“结构化的”。 ” 如果您不喜欢该产品(您可能不喜欢),那么该评论的大部分内容的适当术语可能是“脏话”或“粗言秽语”。

处理这种情况的方法是混合结构化和非结构化数据,并在两者之间建立某种关系。就像每个关系数据库表中的一列非结构化数据。(或者我应该说“关系”,只是为了显示我的年龄?或者也许我应该假装非常年轻,现代和酷,可能留着时髦的胡子等等,称其为“收藏”。)

JSON 示例:结构化和非结构化数据

抛开这些问题,让我们考虑一个使用结构化和非结构化 JSON 数据的示例。假设我们有一家商店销售不同类型的衣服、裤子、夹克和鞋子,我们要创建一个表来存放库存。该表将具有一些始终存在的列,并且对于表中的所有行具有相同的含义,例如名称、库存数量和价格。这些项目非常适合关系格式。

除此之外,我们希望添加对于每种类型甚至每个项目实例具有不同含义的属性。这里有颜色、宽度、长度和大小等信息。我们认为这些是非相关的,因为这些属性的解释根据服装的类型(例如 M 码或鞋码或“斑马条纹”颜色)而有所不同,并且某些服装可能具有独特的属性,例如设计师或推荐的属性由工作人员。我们的表可能看起来像这样:

在此表中,我们有一些列看起来像任何关系数据库表中的列,然后我们有一个名为 attr 的列,它可以保存相关服装的任何相关属性,我们将其存储为 JSON 字符串。您可能会注意到,我们在这里没有使用 JSON 数据类型,因为 MariaDB 中不存在该数据类型,尽管存在 JSON 函数,但这些 JSON 函数作用于具有 JSON 内容的文本字符串。

但上面有一个我不太关心的问题:由于 attr 列是纯文本,任何类型的数据都可以放入 attr 列中,甚至是无效的 JSON。好消息是,MariaDB 10.2 及更高版本中对此进行了修复,即 CHECK 约束确实有效。每当插入或更新一行时,这种约束就会启动,此时任何 CHECK 约束都会运行并验证数据 - 如果验证失败,操作也会失败。在展示示例之前,我只想提一下我们要在此处使用的一个 JSON 函数:JSON_VALID,它接受一个字符串并检查它是否是有效的 JSON。请注意,尽管 CHECK 约束在这里特别有效,但它们可以用于任何类型的数据验证。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wouderw

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值