MySQL 文档存储 可以跳过底层数据结构创建、数据规范化和其它使用传统数据库时需要做的工作,直接存储数据。

MySQL 可以提供 NoSQL JSON 文档存储Document Store了,这样开发者保存数据前无需规范化normalize数据、创建数据库,也无需在开发之前就制定好数据样式。从 MySQL 5.7 版本和 MySQL 8.0 版本开始,开发者可以在表的一列中存储 JSON 文档。由于引入 X DevAPI,你可以从你的代码中移除令人不爽的结构化查询字符串,改为使用支持现代编程设计的 API 调用。

系统学习过结构化查询语言(SQL)、关系理论relational theory、集合set和其它关系数据库底层理论的开发者并不多,但他们需要一个安全可靠的数据存储。如果数据库管理人员不足,事情很快就会变得一团糟,

MySQL 文档存储[1] 允许开发者跳过底层数据结构创建、数据规范化和其它使用传统数据库时需要做的工作,直接存储数据。只需创建一个 JSON 文档集合document collection,接着就可以使用了。

JSON 数据类型

所有这一切都基于多年前 MySQL 5.7 引入的 JSON 数据类型。它允许在表的一行中提供大约 1GB 大小的列。数据必须是有效的 JSON,否则服务器会报错;但开发者可以自由使用这些空间。

X DevAPI

旧的 MySQL 协议已经历经差不多四分之一个世纪,已经显现出疲态,因此新的协议被开发出来,协议名为 X DevAPI[2]。协议引入高级会话概念,允许代码从单台服务器扩展到多台,使用符合通用主机编程语言样式common host-language programming patterns的非阻塞异步 I/O。需要关注的是如何遵循现代实践和编码风格,同时使用 CRUD (Create、 Replace、 Update、 Delete)样式。换句话说,你不再需要在你精美、纯洁的代码中嵌入丑陋的 SQL 语句字符串。

一个新的 shell 支持这种新协议,即所谓的 MySQL Shell[3]。该 shell 可用于设置高可用集群high-availability cluster、检查服务器升级就绪状态upgrade readiness以及与 MySQL 服务器交互。支持的交互方式有以下三种:JavaScript,Python 和 SQL。

代码示例

下面的代码示例基于 JavaScript 方式使用 MySQL Shell,可以从 JS> 提示符看出。

下面,我们将使用用户 dstokes 、密码 password 登录本地系统上的 demo 库。db 是一个指针,指向 demo 库。

$ mysqlsh dstokes:password@localhost/demo

JS>db.createCollection("example")

JS>db.example.add(

{

Name:"Dave",

State:"Texas",

foo:"bar"

}

)

JS>

在上面的示例中,我们登录服务器,连接到 demo 库,创建了一个名为 example 的集合,最后插入一条记录;整个过程无需创建表,也无需使用 SQL。只要你能想象的到,你可以使用甚至滥用这些数据。这不是一种代码对象与关系语句之间的映射器,因为并没有将代码映射为 SQL;新协议直接与服务器层打交道。

Node.js 支持

新 shell 看起来挺不错,你可以用其完成很多工作;但你可能更希望使用你选用的编程语言。下面的例子使用 world_x 示例数据库,搜索 _id 字段匹配 CAN. 的记录。我们指定数据库中的特定集合,使用特定参数调用 find 命令。同样地,操作也不涉及 SQL。

varmysqlx=require('@mysql/xdevapi');

mysqlx.getSession({//Auth to server

host:'localhost',

port:'33060',

dbUser:'root',

dbPassword:'password'

}).then(function(session){// use world_x.country.info

varschema=session.getSchema('world_x');

varcollection=schema.getCollection('countryinfo');

collection// Get row for 'CAN'

.find("$._id == 'CAN'")

.limit(1)

.execute(doc=>console.log(doc))

.then(()=>console.log("\n\nAll done"));

session.close();

})

下面例子使用 PHP,搜索 _id 字段匹配 USA 的记录:

// Connection parameters

$user='root';

$passwd='S3cret#';

$host='localhost';

$port='33060';

$connection_uri='mysqlx://'.$user.':'.$passwd.'@'.$host.':'.$port;

echo$connection_uri."\n";

// Connect as a Node Session

$nodeSession=mysql_xdevapi\getNodeSession($connection_uri);

// "USE world_x" schema

$schema=$nodeSession->getSchema("world_x");

// Specify collection to use

$collection=$schema->getCollection("countryinfo");

// SELECT * FROM world_x WHERE _id = "USA"

$result=$collection->find('_id = "USA"')->execute();

// Fetch/Display data

$data=$result->fetchAll();

var_dump($data);

?>

可以看出,在上面两个使用不同编程语言的例子中,find 操作符的用法基本一致。这种一致性对跨语言编程的开发者有很大帮助,对试图降低新语言学习成本的开发者也不无裨益。

支持的语言还包括 C、Java、Python 和 JavaScript 等,未来还会有更多支持的语言。

从两种方式受益

我会告诉你使用 NoSQL 方式录入的数据也可以用 SQL 方式使用?换句话说,我会告诉你新引入的 NoSQL 方式可以访问旧式关系型表中的数据?现在使用 MySQL 服务器有多种方式,作为 SQL 服务器,作为 NoSQL 服务器或者同时作为两者。

mysql可以存文档_MySQL 文档存储介绍相关推荐

  1. 数组在mysql中是什么类型_MySQL 中的数据类型介绍

    1.概述 要了解一个数据库,我们也必须了解其支持的数据类型. MySQL支持所有标准的SQL数据类型,主要分3类: 数值类型 字符串类型 时间日期类型 另一类是几何数据类型,用的不多,也没多介绍.  ...

  2. mysql 藏文字典_mysql无法压缩存储表情

    importjava.util.regex.Matcher;importjava.util.regex.Pattern;importorg.apache.commons.lang.StringUtil ...

  3. 一个mysql可以存多少数据类型_mysql一张表到底能存多少数据?

    前言 程序员平时和mysql打交道一定不少,可以说每天都有接触到,但是mysql一张表到底能存多少数据呢?计算根据是什么呢?接下来咱们逐一探讨 知识准备 数据页 在操作系统中,我们知道为了跟磁盘交互, ...

  4. MySQL怎么存base64编码_MySQL中如何将字符串转为base64编码?

    在MySQL中,TO_BASE64()函数将字符串转换为以base-64编码的字符串并返回结果.(相关推荐:<MySQL教程>) 语法TO_BASE64(str) 其中str是需要编码的字 ...

  5. mysql如何存json格式_mysql 插数据,存json格式

    private JSONArray wrapJson(ResultSet rs) throws SQLException{ JSONArray jsonArray = new JSONArray(); ...

  6. mysql如何存点坐标_mysql – 在服务器上存储GPS坐标(轨道)的最佳方式

    如果我是你,我会使用TRACK和POINT表. TRACK表将包含每个不同轨道的行 TRACK_ID int not null (PK) NAME varchar(40) DESCRIPTION va ...

  7. mysql修改路径报错_mysql修改数据存储路径报错处理

    Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' 解决?: >>> vim ...

  8. mysql支持数据安全的引擎_MySQL 支持的存储引擎

    存储引擎: 数据库存储引擎是数据库底层软件组件,数据库管理系统使用数据引擎进行创建.查询.更新和删除数据操作. 不同的存储引擎提供不同的存储机制.索引技巧.锁定水平等功能,使用不同的存储引擎还可以获得 ...

  9. MySQL主从同步的概述_MySQL主从同步原理介绍

    概述 Mysql的Replication(复制)是一个异步的复制过程,从一个 Mysql instance(我们称之为 Master)复制到另一个Mysql instance(我们称之 Slave). ...

最新文章

  1. linux 下camera调试笔记【转】
  2. SQL SERVER错误:已超过了锁请求超时时段。 (Microsoft SQL Server,错误: 1222)
  3. java的动态代理机制详解
  4. ros构建机器人运动学模型_古月私房课 | ROS机械臂开发中的主角MoveIt!
  5. 利用Python对销售额进行预测
  6. UI Startup analysis - sap.ui.core.Core what js files are loaded
  7. 微型计算机中 辅助存储器通常包括,第7章 微型计算机存储器习题参考答案
  8. python饼形图_Python | 饼形图
  9. 鱼塘钓鱼(信息学奥赛一本通-T1373)
  10. Exchange 2007 SP1 SCR
  11. linux screen 命令详解[转]
  12. IP地址规划设计技术
  13. 使用注册表删除没用的DLL文件
  14. 声纹识别技术简介——化繁为简的艺术
  15. 火灾报警管理系统java,火灾报警系统开题报告
  16. Excel聚光灯--双箭头指示
  17. excel股票今日走势计算机,怎样用excel 实时读取 股票日线数据
  18. 飞秋只能发文件不能接收文件的解决办法
  19. 用c语言实现打印乘法口诀表
  20. “熊猫烧香”李俊的病毒人生

热门文章

  1. 微信web开发者工具使用
  2. html帮助文件的制作软件,HTML帮助文件的制作和使用(下)
  3. golang iris mysql_golang iris使用
  4. 使用navicat创建数据库
  5. IC公司职位与职业发展(数字部门)
  6. 秒杀抢券系统实现的注意事项
  7. 东南亚跨境商家必备的星卓越货代服务系统1元贴单代发服务
  8. 小程序如何实现抖音视频效果?
  9. 8瓶药,有一瓶毒药,至少需要几只小白鼠才能一次实验出结果
  10. 【调剂】哈尔滨工程大学 核学院 装置所 收调剂