mysql可以存文档_MySQL 文档存储介绍
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 文档存储介绍相关推荐
- 数组在mysql中是什么类型_MySQL 中的数据类型介绍
1.概述 要了解一个数据库,我们也必须了解其支持的数据类型. MySQL支持所有标准的SQL数据类型,主要分3类: 数值类型 字符串类型 时间日期类型 另一类是几何数据类型,用的不多,也没多介绍. ...
- mysql 藏文字典_mysql无法压缩存储表情
importjava.util.regex.Matcher;importjava.util.regex.Pattern;importorg.apache.commons.lang.StringUtil ...
- 一个mysql可以存多少数据类型_mysql一张表到底能存多少数据?
前言 程序员平时和mysql打交道一定不少,可以说每天都有接触到,但是mysql一张表到底能存多少数据呢?计算根据是什么呢?接下来咱们逐一探讨 知识准备 数据页 在操作系统中,我们知道为了跟磁盘交互, ...
- MySQL怎么存base64编码_MySQL中如何将字符串转为base64编码?
在MySQL中,TO_BASE64()函数将字符串转换为以base-64编码的字符串并返回结果.(相关推荐:<MySQL教程>) 语法TO_BASE64(str) 其中str是需要编码的字 ...
- mysql如何存json格式_mysql 插数据,存json格式
private JSONArray wrapJson(ResultSet rs) throws SQLException{ JSONArray jsonArray = new JSONArray(); ...
- mysql如何存点坐标_mysql – 在服务器上存储GPS坐标(轨道)的最佳方式
如果我是你,我会使用TRACK和POINT表. TRACK表将包含每个不同轨道的行 TRACK_ID int not null (PK) NAME varchar(40) DESCRIPTION va ...
- mysql修改路径报错_mysql修改数据存储路径报错处理
Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' 解决?: >>> vim ...
- mysql支持数据安全的引擎_MySQL 支持的存储引擎
存储引擎: 数据库存储引擎是数据库底层软件组件,数据库管理系统使用数据引擎进行创建.查询.更新和删除数据操作. 不同的存储引擎提供不同的存储机制.索引技巧.锁定水平等功能,使用不同的存储引擎还可以获得 ...
- MySQL主从同步的概述_MySQL主从同步原理介绍
概述 Mysql的Replication(复制)是一个异步的复制过程,从一个 Mysql instance(我们称之为 Master)复制到另一个Mysql instance(我们称之 Slave). ...
最新文章
- android 是否允许打印debug级别日志的开关_log日志功能及设置方法
- CF-1209 F. Koala and Notebook(建图BFS)
- 【绝对有用】Server Tomcat v9.0 Server at localhost failed to start
- 边工作边刷题:70天一遍leetcode: day 97-2
- 使用WSO2 ESB构建制造服务总线(MSB)
- linux禁用防火墙配置,CentOS Linux防火墙配置及关闭
- 信奥中的数学:母函数
- 池化技术及jdk的线程池讲解
- (98)FPGA时序裕量
- 测试(一)试题及答案
- System Center Configuration Manager 2016 域准备篇(Part2)
- 社会我张哥,人狠话不多。
- java email 的格式_使用Java将电子邮件转换为原始格式
- 计算机毕业设计JAVA便利店系统mybatis+源码+调试部署+系统+数据库+lw
- mysql 查询优化实验报告_数据库优化查询实验报告.docx
- sp导出贴图到maya
- LTE的核心网之:MME,SGW,PGW
- Python3 print pprint
- 微信公众平台SDK! Senparc.Weixin.MP.dll(资料整理)
- Esxi 6.7基于已有数据存储配置虚拟机(Windows类)间共享存储(非RDM)