linux和mysql重点哪个_重要的MySQL 文档存储知识点扫盲

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

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

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

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

JSON 数据类型

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

X DevAPI

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

一个新的 shell 支持这种新协议,即所谓的 MySQL Shell。该 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。

var mysqlx = require('@mysql/xdevapi');

mysqlx.getSession({             //Auth to server

host: 'localhost',

port: '33060',

dbUser: 'root',

dbPassword: 'password'

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

var schema = session.getSchema('world_x');

var collection = 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 的记录:

// 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/396541.shtml

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

相关文章

python端口扫描工具_Python实现的多线程端口扫描工具分享

# -*- coding: utf-8 -*-__author__ Phtih0nimport threading, socket, sys, cmd, os, Queue#扫描常用端口PortList [21, 22, 23, 25, 80, 135, 137, 139, 445, 1433, 1502, 3306, 3389, 8080, 9015]#得到一个队列def GetQueue(list):PortQueue Queue.Queue(65535)for p in …

Linux系统启动全过程

分为两部分,第一部分是硬件本身需要加载的信息,之后才是加载Linux相关信息,因为有装有双系统的机器嘛 1.计算机加电 2.BIOS开始运行,检测硬件:cpu、内存、硬盘等 3.BIOS读取CMOS存储器中的参数,选择启动设备…

day09_读写分离_Atlas小记

GRANT ALL PRIVILEGES ON *.* TO root% identified by mysql;FLUSH PRIVILEGES;主从库上全做--------------------------------------------------------------------yum install -y gcc*rpm -ivh Atlas-2.2.1.el5.x86_64.rpm 【rpm包直接安装】rpm -ql Atlas 【查看安装路径…

Free Code Camp现在有本地组

by freeCodeCamp通过freeCodeCamp Free Code Camp现在有本地组 (Free Code Camp now has Local Groups) Our open source community was born online. And our campers are adept at using the internet to communicate. Most of this communication is just short text messa…

二十四点游戏python_[求助]关于二十四点游戏python

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼24点纸牌游戏的开发24点是一种老少咸宜的游戏,它的具体玩法如下:给玩家4张牌,每张牌的面值在1~13之间,允许其中有数值相同的牌。采用加、减、乘、除四则运算,允…

python-3.6.2安装

1、下载python-3.6.2-amd64.exe安装包 官网下载地址:https://www.python.org/ 2、Python安装,双击傻瓜式安装(用英文路径,不要有空格), 特别要注意勾上Add Python 3.6 to PATH(勾选后&#xff0…

Siege压力工具

Siege官方:http://www.joedog.org/ Siege下载:http://www.joedog.org/pub/siege/siege-latest.tar.gz Siege解压并安装:# tar -zxvf siege-latest.tar.gz # cd siege-latest/ #./configure #make #make installSiege使用:# siege -h 查看相关…

递归javascript_JavaScript中的递归

递归javascriptby Kevin Ennis凯文恩尼斯(Kevin Ennis) JavaScript中的递归 (Recursion in JavaScript) I’m just gonna get this out of the way right up front, because people get really angry otherwise:我只是直接解决这个问题,因为否则人们会非常生气&…

python google drive api_Python管理Google Drive文件

背景Google Drive给我们提供了很多管理和共享文件的简便方法,而且还是免费的(当然免费账户有一定存储限制)。但是,对于某些edu用户,Google Drive存储不仅是免费的,而且是无配额限制的。您是否想知道如何从数据科学的角度充分利用这…

Struts2学习---基本配置,action,动态方法调用,action接收参数

首先我们先来直接配置,然后再来讲原理: 第一步:jar包的引入: 我们可以到struts2的官网上下载: http://struts.apache.org/download.cgi#struts2513 然后解压将里面的app文件夹下的示例war文件解压,将里面的…

实现对数组找最大最小数

实现对数组找最大最小数 在用js的过程中我们往往会需要找到一个数组里最大或最小的数, 但是我们不能直接用Math.max(Arr)或Math.min(Arr),因为max()里面不能填数组,只能填连续的数。 那我们该怎么办呢? 一定…

开源免费 低代码平台开源_行动透明:免费代码营现已开源

开源免费 低代码平台开源by freeCodeCamp通过freeCodeCamp 行动透明:免费代码营现已开源 (Transparency in Action: Free Code Camp is Now Open Source) We’re thrilled to announce that Free Code Camp is now fully open-source. Now you can fork our code b…

vc mysql init 崩溃_故障分析 | 崩溃恢复巨慢原因分析

作者:xuty本文来源:原创投稿*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。一、现象有个 MySQL 5.7 开发库异常挂掉后,奔溃恢复一直处于如下位置,且持续了 2 小时左右才起来…

surfaceview结束后怎么处理_污泥压滤机处理后的污泥怎么处置

在污泥处理处置中,污泥压滤机处理污泥只是对污泥进行脱水,并没有实现污泥资源化处置。再进行污泥“减量化、无害化、资源化”处理时,许多企业用污泥压滤机对污泥脱水处理后就不知道怎么继续处置了,从而使污泥饼无处可去&#xff0…

js数组详解

1,什么是数组数组是值得有序集合,每个值叫做一个元素,而每个元素在数组中有一个位置,以数字表示,称为索引。js的数组是无类型的,数组元素可以是任意类型,同一个数组中的不同元素可能是对象或数组…

[转载]linux内存映射mmap原理分析

转自:http://blog.csdn.net/yusiguyuan/article/details/23388771 内存映射,简而言之就是将用户空间的一段内存区域映射到内核空间,映射成功后,用户对这段内存区域的修改可以直接反映到内核空间,同样,内核空…

判断一个指针有没有free_Free Code Camp的每个人现在都有一个档案袋

判断一个指针有没有freeby freeCodeCamp通过freeCodeCamp Free Code Camp的每个人现在都有一个档案袋 (Everyone at Free Code Camp now has a Portfolio) Note: we originally published this on our now-defunct blog in January of 2015.注意:我们最初是在2015年…

冒泡、快速排序小结

1.冒泡排序 (1) 比较领近的两个数 (2) 如果左边的比右边的数字大,则交换位置 (3) 向右移动一位,继续比较相邻的两个数 排序示例: 一轮排序结束后,最大值的位置已经移动最右端,再次如此循环,最终经过n-1次则…

python中until函数_等待应用程序窗口:python中的pywinauto.timings.WaitUntilPasses

我试图在pywinauto中使用waituntilpasses来给应用程序时间打开一个新窗口.我已使用SWAPY识别窗口详细信息.为了进行测试,我手动打开了子窗口,因此WaitUntilPasses应该立即看到该窗口,但是没有看到.语法显示为OK,因为我可以找到并打印find_windows的输出,如下所示:xx…

synchronized 异常_由浅入深,Java 并发编程中的 Synchronized

synchronized 作用synchronized 关键字是 Java 并发编程中线程同步的常用手段之一。1.1 作用:确保线程互斥的访问同步代,锁自动释放,多个线程操作同个代码块或函数必须排队获得锁,保证共享变量的修改能够及时可见,获得…