JSON 数据建模指南





5.00/5 (2投票s)
在本文中,我们希望提供资源,帮助您快速入门文档数据库和 Couchbase 的学习之路。
开始学习文档数据库时,最好掌握 JSON 数据建模的最佳实践。这将帮助您在该领域和主题中更容易地导航,并扩展您在该主题上的词汇量。拥有传统关系数据库的经验也是一个很好的开端。了解数据结构、查询和索引将为您提供领先优势。一些概念将转移过来,尤其是在学习 Couchbase 时,Couchbase 使用 SQL 变体 (N1QL) 进行查询。您已经从 SQL 中了解的许多术语都将适用,但不同之处在于它们适用于键值文档数据存储和嵌套文档,而不是表和行。
为什么选择 JSON 作为数据
我们的第一批资源将有助于刷新您对 JavaScript 对象表示法的理解。
JSON 简史
随着 2000 年代初期 AJAX 的普及,Douglas Crockford 创造了 JSON 一词。前两个链接谈论的是 JSON 出现之前的时期,当时它已经被使用但没有名称,直到单页应用程序时期。第二个链接是来自上届硅谷代码训练营的视频,我在 2019 年有机会参加了 Doug 的演讲。他关于“JSON 历史”的演讲是我们在学习更多关于 JSON 数据建模的旅程中开始的好方式。
- JSON 简史
- 2019 年硅谷代码训练营上的 JSON 历史
- 使用 JSON
更好地了解其历史和词汇后,我们可以继续实际使用 JSON。下面的 MDN 链接将回答许多关于结构、使用 XMLHttpRequest 获取 JSON 以及测试您自己的技能的问题。您可以在文章末尾通过一个挑战来测试您对文章的理解,我认为这真的很有趣。完成后,您将更有准备地使用 JSON。
了解了 JavaScript 对象表示法的基础知识后,我们就可以开始文档建模之旅了。
JSON 数据建模
在此类别中,我们首先讨论 JSON 数据建模的通用概念。在接下来的部分中,我们将讨论从关系数据库迁移的策略。
我们上面的第一个资源是 Matthew Groves 的视频,下面概述了他的演讲的每个部分的重点,其中涵盖了为什么切换到 NoSQL(在我们的例子中是文档数据库)可能是有益的。它涵盖了建模和访问此数据的策略,并触及了迁移技巧。让我们探讨这个视频中的一些主题。
为什么选择 NoSQL
一些数据库,如 Couchbase,将其数据存储为纯 JSON,在本节中,Matt 强调了使用分布式文档数据库的诸多原因。他还讨论了当前的 NoSQL 格局,简要介绍了 NoSQL 及其可伸缩性、灵活性、可用性、性能和用例。
Couchbase 客户衍生的 NoSQL 用例
JSON 数据建模
在本节中,您将获得一个在 JSON 中建模数据的练习,并提供 JSON 数据建模示例。本节包含真实世界数据的属性、一个简短的关于关系世界中建模的比较部分、关于数据建模策略的经验法则。还讨论了第三方建模工具,如 Hackolade、Erwin 和 Idera。这些是针对 NoSQL 数据库的工具。
表与 JSON 数据并排比较
访问数据
这部分深入探讨了在 NoSQL 数据库中建模和访问数据的策略和经验法则,例如通过键读取、更新和删除记录。给出了键的建议以及一些很好的示例。我们通过子文档和子集合的方法来结束本节,Couchbase 中找到的 N1QL 查询语言。
理解数据结构和关系是数据访问的关键
迁移数据
在这里,我们讨论了使用工具将数据从一个数据库迁移到另一个数据库,这些工具将一路帮助您。例如 Informatica、Kafka、Talend 和 Apache Nifi。Couchbase 还有一个名为 cbimport 的工具,可以帮助您将数据导入 Couchbase。
在投资工具之前,保持简单,使用数据库工具来帮助导出、导入和转换
Couchbase 数据建模博客
接下来,我们有一些来自 Couchbase 博客的文章,可能会引起您对 JSON 数据建模技术 的兴趣
我也喜欢在构建真实世界项目的同时学习。我的下一个链接可以帮助您开始了解如何处理 NoSQL 中的注册、登录和身份验证。
想了解一个简单的 REST API 的规划演练吗?下面的资源使用 Node 和 Express JS 实现了上述文章中的思想。我个人刚刚更新了这篇文章,以使用最新的 Couchbase Node SDK 版本 3,并提供了一个 GitHub 存储库,其中包含源代码、Postman 集合和环境变量,以帮助轻松启动和运行项目。
我们不能不提上面的两篇文章,也不能不提使用 Angular 11 为上述存储库中的 REST API 构建的前端客户端。此外,还有一篇文章,我最近更新了它,并提供了一个 包含完成代码的 GitHub 存储库。
Couchbase 数据建模培训
让我们向您介绍来自 Couchbase Academy 的 Couchbase 数据建模资源。两个很棒的课程,一个面向初学者,另一个更高级,让您亲身体验 Couchbase,同时考虑数据建模和针对 N1QL 查询语言的查询优化。
Couchbase 文档中有几页非常好的页面,涉及文档数据中的数据建模和实体关系。下面的链接是 Couchbase 5x 版本的一部分,但仍然包含有价值的信息。
嵌入式与引用文档
在 Couchbase Server 的当前版本 6x 中,我们还有一个页面,该页面已根据我们数据库的最新版本进行了演进和更新。
Couchbase Server 7 中的数据建模
我们已在 Couchbase 开启新纪元,开始在 Couchbase Server 7 中利用 Scopes 和 Collections。它将于 2021 年夏季发布。以下是一些最新的 Couchbase 博客文章,可帮助理解 Scopes 和 Collections 世界中的数据建模,并使用它们构建真实世界的应用程序。
从 Couchbase 版本六升级到七时,文档可以分配到默认范围和集合,以实现即时兼容性
该表显示了熟悉的关系模型构造到 Couchbase 的映射
从 RDBMS 迁移数据到 NoSQL
当您从关系数据库迁移数据时,存在许多规范化约束和模式要求。这些在处理表或通过外键关联其他表时是必需的。这种使用唯一 ID 的链接类型在文档数据库中也是可能的。还有其他选项,例如嵌套数据,即使它看起来是冗余的。在本类别的第一组资源中,我们将提供指向课程、视频和文章的链接,这些资源将有助于从关系数据库迁移到 JSON 文档数据库。
这份首个资源来自我们团队成员 Matthew Groves 的视频。他不仅精通 Couchbase(文档数据存储),还拥有关系数据库背景。我喜欢这个视频,因为他在不到二十分钟的时间里,就能带你了解基础知识,并让你开始从表格迁移到文档的旅程。
我们首先从关系数据库导出数据,使用 CSV 格式,然后使用一个名为 cbimport 的工具将数据导入 Couchbase。然后他指导如何在文档数据库端转换和构建这些数据,并使用 N1QL 查询语言最终确定我们的数据。通过 N1QL,我们可以将数据从暂存点移动到可供使用的最终数据桶。这个视频充满了真实的NQL代码示例,让您可以跟随并亲自尝试。
Matt 也写了一篇关于同一主题的文章,如果您喜欢浏览博客文章而不是花时间观看整个视频,那么这篇文章会很有帮助。
您还可以查看 将您的关系数据库数据建模为 NoSQL 文档数据,这也是一个视频,其中包含许多好的观点和演练。它将帮助您思考如何将现有关系数据建模为文档数据。
另一个帮助您理解关系数据差异以及了解 Couchbase 工作原理的资源来自 Couchbase 团队备受尊敬的成员 David Segleau。他是一位拥有三十多年数据库社区经验的老兵。
我们 Couchbase 上的博客是另一个重要的资源,所以我特意挑选了几篇专门讨论从关系系统迁移到 Couchbase 的文章,这些信息也高度适用于从任何关系数据库(如 SQL Server)迁移到 JSON 文档数据库(如 Couchbase)。
外部数据建模资源
Couchbase 是网络上学习 NoSQL、文档数据库或键值数据存储数据建模的最佳场所之一。但是,最好也到外面看看,因为还有更多很棒的资源等着您。在 Pluralsight 上有一个精彩的课程,它将引导您在 JSON 中创建数据模型,并探讨关系数据建模与文档数据建模之间的区别。
在 Pluralsight 视频的这一张幻灯片中,Kishan Iyer 谈到了他在课程中涵盖的众多不同数据库技术之一
Pluralsight 是应用程序开发人员的一个绝佳资源,它还提供许多与 Couchbase Server 相关的课程。
这篇来自高度可扩展博客关于NoSQL 数据建模技术的文章内容丰富有趣,并附带了更多外部资源。
从 MongoDB 迁移到 Couchbase
我们遇到客户最常从 MongoDB 切换到 Couchbase。有些人是为了可扩展性,另一些人是为了查询语言。如果您发现需要将数据从 MongoDB 导入 Couchbase,这些资源就是为您准备的!
Couchbase 博客中的几篇博文很好地涵盖了这一主题。前两个链接是新文章,包含关于从 MongoDB 切换到 Couchbase 的最新信息。
我们希望本文中提供的资源能大大帮助您快速入门文档数据库和 Couchbase 的学习之路。我们已尝试构建一个您可以收藏并重新访问的学习资源。如果您认为我们遗漏了任何重要资源,请评论并提及这些资源,因为我们一直在寻求扩充本指南,并确保每个人都能从 JSON 数据建模资源的单一访问点中受益。