MySQL Document Store 混合使用关系型数据与非关系型数据

2020-09-28 11:33:31 浏览数 (1)

Document Store 文档存储,又称为面向文档的数据库。在这篇文章里将简要介绍一下什么是文档存储?它与传统的关系型数据库有什么区别?以及MySQL是如何实现文档存储的。

首先需要阐明几个概念:

JSON:JavaScript Object Notation是一种轻量级的数据交换格式,对于机器和人均具有可读性。使用JSON无需按照事先定义的某种结构,可以按照用户的设想去描述数据。(严格意义上来说,用户只要遵循JSON格式的书写标准即可,例如花括号,方括号及引号等等)开发人员可以非常方便的通过key去访问数据,而不用管key是什么。

API:Application Programming Interface是一些类和方法的集合,用来进行某些操作,有时也可以简单的理解为库。通过这些类和方法可以让开发人员执行各种各样的工作。

NoSQL接口:一种API,它不要求使用SQL语句去访问数据,这个API会提供类或方法用于连接服务器,访问数据,找回数据等等。通常情况下,使用MySQL会通过SQL接口进行访问,需要执行严格的SQL命令,然后取得结果。如果希望应用程序通过SQL接口获取数据,需要执行SQL命令取得结果,并将结果转换为开发语言所使用的内部结构后,才能获得。使用NoSQL接口将允许开发人员直接使用API操作数据。

Document Store:文档存储也称作面向文档的数据库,是一种用于管理半结构化数据的存储系统。现代化的文档存储支持使用key value构建,例如使用JSON或XML。

看到这里,您可能会想了解MySQL的文档存储是如何实现的呢?上图是MySQL的Document Store的主要组件。MySQL通过一个新的协议(X Protocol)和新的API(X DevAPI实现X Protocol)来实现JSON文档存储的(服务器端通过X Plugin实现X Protocol)。

区分文档存储与关系型数据的最重要两点是半结构化的数据和NoSQL接口。关系型数据要求事先定义一个结构,数据按照相同的结构存放在一起。之前我们很少能够看到使用关系型数据的访问机制去访问文档存储里面的数据,从MySQL5.7.8之后,用户可以通过JSON数据类型将JSON文档作为一列存储在表中。可能有人会问,如果将JSON文档以TEXT或者BLOB的数据类型存储到MySQL里是不是也可以呢?可以,但是需要在应用程序里对其进行解析,会使应用程序变得复杂,发生潜在的错误。使用JSON数据类型可以避免这种问题发生。首先,JSON数据类型会对文档进行校验,只有正确、有效的JSON文档才能够存放到JSON列。其次,当JSON文档存储在表里,存储引擎会用一种专门优化的二进制格式进行处理,使得服务器可以快速访问里面的数据,而不是每次访问时进行解析处理。因此MySQL能够在关系型数据里面存储非结构化数据。除此之外,MySQL还增加了一个Collection集合的概念用以在数据库里面存储文档。

简要概括一下MySQL Document Store:

  • 文档在 Document Store里面以JSON数据类型存储
  • Collection = 文档的集合

表现在数据库里面:

Innodb的表等同于 Collection,使用生成的列作为索引

应用程序通过X-DevAPI进行数据操作

通过MySQL Shell进行管理

MySQL Connector

JavaScript,Python, PHP, Java, C#, C 支持 X DevAPI

以上内容简明介绍了MySQL Document Store,今后找机会写一下更为详尽的内容。

感谢您关注MySQL!

0 人点赞