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 服务器或者同时作为两者。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/571265.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Maven项目配置、检出、运行

副标题:JDK安装到Maven运行 关键字:JDK SVN Maven Tomcat Eclipse IDEA 一、JDK 1、JDK包 JDK包 ../Java/jdk1.8 # 按需 图例 2、环境变量 步骤 计算机 → 属性 → 高级系统设置 → 环境变量 → 系统变量 → 新建/编辑 设置 JAVA_HOME ..…

mysql 存储过程代码_MySQL存储过程及常用函数代码解析

mysql存储过程的概念:存储在数据库当中可以执行特定工作(查询和更新)的一组SQL代码的程序段。mysql函数的概念:函数是完成特定功能的SQL语句,函数分为内置函数和自定义函数(user-defined function UDF)MySQL存储过程和函数的区别存储过程可以…

MySQL数据库恢复(使用mysqlbinlog命令)

1:开启binlog日志记录 修改mysql配置文件mysql.ini,在[mysqld]节点下添加 复制代码代码如下:# log-bin log-bin E:/log/logbin.log 路径中不要包含中文和空格。重启mysql服务。通过命令行停止和启动mysql服务 复制代码代码如下:c:\>net stop mysql…

mysql 创建数据库文件_mysql学习之通过文件创建数据库以及添加数据

1、# 创建数据库语句create database mydb default character set utf8;# 运用数据库语句use mydb;# 创建表格,这里只简单的创建一张表格# 设置InnoDB主要是为了事务操作的需要create table mytable(id int primary key auto_increment,name varchar(20),count int …

angularjs启动项目报ERROR in AppModule is not an NgModule解决方法

这主要是ts编译器版本问题,一般是因为ts编译器版本过高导致。 解决方式: npm uninstall -g typescriptnpm install -g typescripttsc -v 查看安装的typescript版本修改package.json中的typescript版本为当前电脑所安装版本 删除node_module重新安装cnpm …

mysql gtid 备份恢复_MYSQL数据库备份恢复

在实例存活的情况,可以在实例状态中查询ALL_GTID。在实例崩溃的情况,无法在实例状态中查询ALL_GTID。可以通过查询BINLOG中的Previous-GTIDs计算来获得ALL_GTID。下面列举与ALL_GTID相关的变量。与ALL_GTID相关的变量Previous-GTIDsPrevious-GTIDs格式如…

PMP 笔记

项目: 为创造独特的产品、服务或结果而进行的临时性工作。 项目特征: 独特性:Unique、临时性:Temporary、渐进明细。 渐进明细:预算越来越精细。比如三峡工程中,预算从10亿级的误差到1亿误差,再…

在mysql怎样查询地址和电话_Mysql数据查询

Mysql查询数据多次过滤条件:from、where、group by、having、distinct、order by、limit > 层层筛选后的结果查:select [distinct] 字段1 [[as] 别名1],...,字段n [[as] 别名n] from [数据库名.]表名 [条件];注:一条查询语句,可…

谷歌搜索技巧:搜索语法+隐藏彩蛋+高级设置

Google是一个非常精密成熟的搜索引擎,其搜索结果的丰富性和准确度较其他搜索引擎都要好,但大多数用户都还只是停留在搜索框中输入一两个关键字,然后点击“搜索”按钮的阶段,这一过程是非常低效和无谓的。学习一些搜索引擎常用的搜…

mysql如何给表字段加密_Mysql 字段加密

1、PASSWORD()2、ENCODE(,) DECODE(,)3、MD5()4、SHA5()5、AES_ENCRYPT AES_DECRYPT加密 select aes_encrypt(name, password );解密 select aes_decrypt(aes_encrypt(name, password ), password );可用hex或base64转码(base64在mysql5.6及以上支持)select hex(aes_en…

mysql数据类型支持比较运_Mysql支持的数据类型(总结)

一.数值类型Mysql支持所有标准SQL中的数值类型,其中包括严格数据类型(INTEGER,SMALLINT,DECIMAL,NUMBERIC),以及近似数值数据类型(FLOAT,REAL,DOUBLE PRESISION),并在此基础上进行扩展。扩展后增加了TINYINT,MEDIUMINT,BIGINT这3种长度不同的整形&#x…

Java 面向对象的设计思维

面向对象的设计思维:合适的方法应该出现在合适的类里面 |解释|:方法是哪个类的,方法便在哪个类里,由这个类去调用 |实际应用|:基本数据类型包装类:因为想要对基本类型数据进行更多的操作,最方便的方式就是将其封装成对象.在对象的描述中定义更多的属性和…

i5 1135g7什么水平_i7-10510U和i5-1135G7对比,该怎么选择呢?

导读:新旧笔记本交替,intel十代i7是否还有与十一代i5一战之力?两者之间差距多少呢?作为买家,肯定想要了解下的哈!! 参数对比 对比项i7-10510U的参数i5-1135G7的参数CPU主频1.8GHz2.4GHz最高睿频4.9GHz4.2GHz三级缓存8MB8MBC/T四核八线程四核八线程核显频率1.15GHZ1.3GHZ…

《学习心得》

最近在学习设计模式,正好也要做毕业设计,就想着把学到的一些皮毛用到毕业设计上面去,结果真的是无从下手。也看了很多其他人关于设计模式的博客,讲了很多很多的好处,但是就是不知道该怎么样运用到实际的项目上去。 毕业…

java获取硬盘序列号_Win7 64+Python3.7获取计算机硬盘信息初探

一、需求由于最近负责电脑资产清查的工作,有100多台分散的电脑需要获得用户名、MAC地址、硬盘序列号、硬盘品牌一般方法:(1)查看系统用户名(2) 获取MAC地址 windos命令行使用ipconfig /all(3&am…

js for in 获得遍历数组索引和对象属性

for in 遍历对象属性 获取的是对象的属性名 var person { name:"admin", age:"21", address:"shanghai"};for(var i in person){ console.log(i)}结果 取得对象的属性名 for in 获取数组的索引值 var array [admin,manager,db];for(var i in arr…

mysql数据库诊断_RDS MySQL 数据库全量SQL诊断

三大难点问题使用MySQL数据库的用户,不可避免都会遇到下面三个难题:1、历史问题难定位数据库凌晨3点发生了CPU 100%的告警,但是该时间段却没有任何慢SQL,怎么继续查找原因?2、SQL压测模版难获取下周要进行大促压测&…

opencv图像处理时使用stringstream批量读取图片,处理后并保存

简介: 同文件输入输出流一样,使用stringstream可以批量读取图片,处理后并进行保存。因为C中头文件 stringstream既可以从string读数据也可向string写数据,利于其这个特点,我们可以进行批量读取和批量保存工作。 参考程…

大数据可视化案例分析_Tableau数据可视化分析案例

0x00 Tableau简介Tableau是一款定位于数据可视化敏捷开发和实现的商务智能展现工具,可用来实现交互的、可视化的分析和仪表盘应用。Tableau提供了体验感良好且易用的使用界面,在处理大规模、多维数据时,可以即时从不同角度看到数据呈现的规律…

1bit和1byte_1byte等于( )bit_学小易找答案

【单选题】WWW上每个资源都有一个唯一地址,称为( )。【单选题】传输层使用( )地址形式区分应用进程?【简答题】习题13【单选题】在网上传输语音和影像,传输层协议一般采用( )。【简答题】分别求出[0,1) 在六个拓扑空间中的内部和闭包。【单选题】以下算法中属于非对称算法的是…