全面上市前:2022-11-17

5.7 X DevAPI

X DevAPI 详细介绍了mysqlx模块以及 X DevAPI 的功能,使您能够将 MySQL 作为文档存储使用。当 MySQL Shell 使用 X 协议连接到 MySQL 服务器时,X DevAPI 使您能够处理关系数据和文档数据。

MySQL 等关系数据库通常需要在存储文档之前定义模式。但是,您可以将 MySQL 用作文档存储,它是一种无模式的文档存储系统,因此模式灵活。例如,当您创建描述产品的文档时,您不需要在存储和操作文档之前了解和定义任何产品的所有可能属性。这不同于使用关系数据库并将产品存储在表中,后者在将任何产品添加到数据库之前必须知道并定义表的所有列。

使用 X 协议与 MySQL 服务器通信的客户端可以使用 X DevAPI 来开发应用程序。

X DevAPI 指定了一组通用的 CRUD 风格的方法。API 由 MySQL Shell 在 JavaScriptPython中实现。下表提供了指向使用 Python 语法的 MySQL Shell 实现的示例丰富用法信息的链接。

按主题提供更多信息 描述
连接和会话 X DevAPI 会话是一个高级数据库会话概念,不同于使用传统的低级 MySQL 连接。使用 X 协议时,Session 可以封装一个或多个实际的 MySQL 连接。使用这种更高的抽象级别将物理 MySQL 设置与应用程序代码分离。会话提供对 X DevAPI 的完全支持和对 SQL 的有限支持。
增删改查操作 使用 X DevAPI 进行创建读取、更新和删除 (CRUD) 操作。MySQL 的核心领域一直是与关系表打交道。X DevAPI 通过添加对可针对文档集合运行的 CRUD 操作的支持来扩展该领域。
使用集合 对集合使用 CRUD 操作并返回文档。对集合执行的最常见操作是创建、读取、更新和删除 (CRUD) 操作。
使用文档 创建集合后,它可以存储 JSON 文档。每个文档都有一个称为文档 ID 的唯一标识符,可以将其视为等同于表的主键。文档ID值通常在添加文档时由服务器自动生成,但也可以手动分配。
使用关系表 X DevAPI SQL CRUD 函数允许您以类似于使用传统 SQL 语句的方式处理关系表。使用 X DevAPI SQL CRUD 函数的add()select()方法,这类似于使用 SQL 客户端在表上发出INSERTSELECT语句。
使用关系表和文档 将文档用于应用程序中非常具体的任务,并依赖于关系表来完成其他任务。或者一个非常简单的纯文档应用程序可以超越文档模型并逐步集成或移动到更强大的关系数据库。这样可以结合文档和关系表的优点。SQL 表提供严格类型化的值语义、可预测和优化的存储。文档有助于类型灵活性、模式灵活性和非标量类型。
结单签发 使用事务将操作分组到一个原子单元中。X DevAPI 支持保存点,它使您能够在可以恢复的事务中设置命名点。X DevAPI 通过lockShared()lockExclusive()方法 支持Collection.find()MySQL 锁定Table.select()。这使您能够控制行锁定以确保对集合进行安全的事务性文档更新并避免并发问题
使用结果集 所有数据库操作都返回一个结果。返回的结果类型取决于执行的操作。
构建表达式 使用 CRUD 中使用的 MySQL 表达式时,可以通过两种方式指定语句。第一种是使用字符串来制定表达式,如果您以前使用 SQL 开发过代码,应该很熟悉。另一种方法是使用表达式生成器功能。
CRUD EBNF 定义 本部分提供了 X DevAPI 中可用对象和函数的可视化参考指南。
表达式 EBNF 定义 本节提供 X DevAPI 中使用的表达式语言语法的可视化参考指南。

有关使用 JavaScript 语法的 X DevAPI 的 MySQL Shell 实现的更多信息,请参阅: