dot 快速的未来将在您所在的城市举办活动。

加入我们参加 Redis 发布会

了解 JSON 数据库的指南

JSON 数据库是如何运作的?它们为应用程序开发人员带来了什么价值?也许从一只宠物猫的角度来看的一些例子可以帮助我们理解。

让我们从 定义术语开始。还有那只猫。

什么是 JSON?

无论开发人员是创建业务逻辑、用户界面、数据库还是后端系统,他们都需要一种方法来描述和交换数据。一个系统对另一个系统说:“我拥有您需要的数据!” 他们需要确定如何构建数据交换方式。数据交换可以使用二进制数据,也可以使用基于文本的数据。

JavaScript 对象表示法 (JSON) 是一种基于文本的数据交换格式,是 JavaScript 的原生格式。由于它是文本,因此人和机器都可以读取它。JSON 通常用于存储和传输数据到应用程序。

与 XML 类似,JSON 是一种数据交换格式,而不是编程语言,从这个意义上说,它不是 图灵完备的。但是,与 XML 一样,在某些方面,由于其可读性和强大功能,它可以像编程语言一样使用。正如 JSON.org 解释的那样,JSON “使用 C 语言家族的程序员熟悉的约定”,例如 Python 和 Java。这使得 JSON 成为在平台之间共享数据的便捷工具。

JSON 具有双重结构:

  • 键值对,有时称为“名称值对”,以及
  • 按特定顺序排列的值列表

JSON 值可以是对象、键值列表、记录、字典、关联数组、字符串、数字、truefalsenull

例如,假设要查询的键是一只小猫;它的值为 floofy。这两个值共同构成一个对象,只要对象用大括号括起来。(这只猫可以被任何它喜欢的东西包围。)描述这只小猫的完整 JSON 字符串可能看起来像

{"name": "Jason", "age": 1, "floofy": true}

在这个例子中,左边的属性,例如 nameagefloofy 是要查询的键,而 Jason1true 代表值。

准备好看看 Redis Enterprise 原生 JSON 如何让开发人员构建现代应用程序了吗? 阅读有关 Redis JSON 的更多信息

什么是 JSON 数据库?

JSON 数据库(或称为 JSON db)是一种文档数据库,有时称为文档存储。数据以基于文本的文档形式表达,而不是您可能从 SQL 数据库中熟悉的列或表格形式。

从结构上讲,JSON 数据库是一种 NoSQL 数据库,它使用 JSON 文档(例如 PDF、文档或 XML 或 JSON 文件)读取和存储半结构化数据。列式、图式、键值式、内存式和文档式都是不同类型的 NoSQL 数据库。

JSON 数据库具有显著优势

  • JSON 数据对人类可读。任何易于让人理解的东西都有价值 - 而且鉴于 JSON 数据库中的数据易于解析,这一点尤为重要。
  • JSON 很轻量级。它的格式开销很小(与 XML 相比,XML 比较冗长)。这对于传输数据或存储数据所需的带宽来说是很有意义的。
  • 开发人员可以以自文档的方式建立数据关系。在上面的猫的例子中,您只需要执行一个查询即可获取“Jason”姓名字段和这只猫的“floofy”值的数据。这也可以提供性能提升。
  • JSON 数据库(与其他 NoSQL 数据库一样)不需要特定的数据结构来打包数据。当应用程序的 数据模型 发生更改时,您无需完全重组软件所依赖的数据库。

除了其数据结构的用户友好性之外,优势还包括存储、模式 和索引灵活性和水平和垂直扩展等方面。以下是一些 JSON 数据库简化开发人员工作方式的方法。

存储灵活性

JSON 数据库中的一个重要元素是它们是动态的。 SQL 数据库 具有固定的字段定义和字段大小,因此重组数据库需要重新索引和其他复杂操作。JSON 数据库更灵活,因为键值结构可以适应数据模型或应用程序需求的变化。

想象一下,一个依赖于用户配置文件和登录身份验证的 Web 应用程序。JSON 数据库的键值可以存储用户 ID、用户偏好、多个 ID 映射以及其他信息,以便应用程序可以快速查找用户并验证访问权限。如果应用程序需求发生变化 - 也许出于合规性原因,需要包含地理数据 - 数据库模式可以在无需完全改造的情况下发生变化。

模式灵活性

JSON 文档数据库是存储数据的紧凑排列,具有开发人员定义的灵活结构。JSON 文件的精简性大大加快了数据与应用程序交互的速度。

JSON 数据库模式 允许嵌入或链接对象,包括循环引用。前面介绍 Jason 这只猫的例子故意保持“hello world”的简单性。但是,JSON 还可以对复杂的数据结构进行建模,例如对象图和循环图。特别是,JSON 数据库支持 嵌套、对象引用和数组。这为开发人员提供了清晰度,因为它将对象分解成不同的层,使数据库更易于维护。

使用嵌套的 JSON 数据库模式,某些值是其他 JSON 对象。

{
 "pet": {
   "name": "Jason",
   "age": 1,
   "location": "USA",
   "kur": "long-haired",
   "breed": "Persian",
   "Address": {
     "longitude": "-113.6335371",
     "latitude": "37.1049502",
     "postal code": "90266"
   }
 }
}

数据分区

高性能计算要求数据库能够扩展以满足需求,无论是在长期(支持海量数据集)还是短期(每个人都购买更多猫玩具的节日购物季)内。水平可扩展性是一种执行负载平衡以防止一个节点承担所有负荷的方法,它在 JSON 数据库中特别有效。这是因为可以将 JSON 数据和索引分区到多个分片和节点,以提高速度和内存管理。

大数据分析

JSON 数据库在数据科学和分析应用程序中变得非常流行。这些要求苛刻的大数据应用程序受益于 JSON 数据库的水平架构和对多个并发查询的支持。

这是因为 JSON 数据库具有灵活的模式和水平和垂直扩展功能。这些功能使文档数据库能够存储大型数据集,并在需要时添加更多节点。 分区 允许数据在节点之间进行平衡,以提高读写速度并确保 可用性

支持不同的索引类型

索引是一种检索数据的策略。文档数据库支持各种索引,例如排序集、按字典顺序编码的索引、地理空间索引、IP 范围索引、全文搜索索引和分区索引。

Redis Enterprise JSON 实战

要查看实时 JSON 演示,Redis 的 Justin Castilla 有趣的直播“Do Birds Dream of JSON”展示了如何从海量信息库中搜索和提取信息。他使用鸟类目击数据来突出显示 JSON 的功能 - 当然没有猫来监督这些鸟类。

https://www.youtube.com/embed/XkzSHMLYN1Q

正在寻找 JSON 支持?

如果您需要有关 JSON 工作原理的更多信息,我们的 YouTube 频道 提供了大量关于这种流行的数据表示格式的直播、操作指南视频和网络研讨会。无论何时遇到死胡同,请随时访问我们的频道。我们通常会提供视觉答案来指导您。

常见问题解答

  • 什么是 JSON 数据库?
    • JSON 数据库是非关系型 NoSQL 数据库,它们将非结构化数据存储为结构化的 JSON 文档,与使用由行和列组成的表格来构建数据的 e SQL 数据库相比。
  • JSON 数据库的例子是什么?
  • 哪个数据库最适合 JSON?
    • 由 JSON 文件组成的文档数据库是五种 NoSQL 类型之一;它已经具有 JSON 结构。在这种非关系型数据库中,JSON 对象可以在文档存储中进行修改。SQL 服务器可能支持 JSON 数据类型,但可能会对如何解析和构建数据施加更多限制。最终,这通常取决于您的用例。
  • JSON 的一些用例是什么?
    • JSON 数据库在 Web 和移动应用开发、在线会话存储和购物车、游戏排行榜和用户库存、数据交换和存储、NoSQL 数据库、内容管理系统以及物联网应用程序中的实时数据交换中被广泛使用。