dot Redis 8 来了——并且是开源的

了解更多

理解 JSON 数据库指南

JSON 数据库如何工作,以及它们为应用程序开发者带来什么价值?或许可以从一只宠物猫的角度来举例说明。

我们先来定义术语。还有那只猫。

什么是 JSON?

无论开发者是创建业务逻辑、用户界面、数据库还是后端系统,他们都需要一种描述和交换数据的方式。一个系统告诉另一个系统,“我有你需要的数据!”,他们需要构建数据交换的方式。数据交换可以是使用二进制数据,也可以是基于文本的。

JavaScript Object Notation (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 相比)。这对于传输或存储数据所需的带宽量来说可能意义重大。
  • 开发者可以以自解释的方式建立数据关系。在上面的猫咪示例中,你只需要一次查询就可以获取名称字段“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 有趣的直播,“鸟会梦到 JSON 吗?”,它展示了如何从海量信息库中搜索和提取信息。他使用了鸟类目击数据来展示 JSON 的功能——可惜,没有猫来监督这些鸟。

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

正在寻找 JSON 支持?

如果您需要更多关于 JSON 如何工作的信息,我们的YouTube 频道有大量关于这种流行数据标记格式的直播、操作视频和网络研讨会。如果您遇到困难,随时可以访问我们的频道。我们通常会有可视化答案来指导您。

常见问题

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