重要的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,接着就可以使用了。
所有这一切都基于多年前 MySQL 5.7 引入的 JSON 数据类型。它允许在表的一行中提供大约 1GB 大小的列。数据必须是有效的 JSON,否则服务器会报错;但开发者可以自由使用这些空间。
旧的 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;新协议直接与服务器层打交道。
新 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 的记录:
<!--?PHP // 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");<br ?--> // 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 文档存储知识点扫盲》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多文章知识!

- 上一篇
- 台式电脑怎么共享wifi?

- 下一篇
- 平板电脑可以玩lol吗?
-
- 文章 · linux | 37分钟前 |
- Ansible与SaltStack自动化对比解析
- 266浏览 收藏
-
- 文章 · linux | 1小时前 |
- Linux服务器优化:资源调度与负载均衡技巧
- 139浏览 收藏
-
- 文章 · linux | 2小时前 |
- Linux自动备份教程:rsnapshot与cron设置详解
- 488浏览 收藏
-
- 文章 · linux | 2小时前 |
- Linux性能监控工具与方法推荐
- 299浏览 收藏
-
- 文章 · linux | 2小时前 |
- Linux内核调优技巧全解析
- 298浏览 收藏
-
- 文章 · linux | 3小时前 |
- Linux虚拟机性能优化技巧详解
- 411浏览 收藏
-
- 文章 · linux | 5小时前 |
- systemd与init脚本对比解析
- 423浏览 收藏
-
- 文章 · linux | 5小时前 |
- Linux日志轮转技巧与优化方法
- 236浏览 收藏
-
- 文章 · linux | 5小时前 |
- Linux账户安全管控技巧
- 176浏览 收藏
-
- 文章 · linux | 6小时前 |
- Linux备份方法与rsync增量技巧
- 433浏览 收藏
-
- 文章 · linux | 7小时前 |
- Linuxiptables日志配置详解
- 327浏览 收藏
-
- 文章 · linux | 7小时前 |
- Linux磁盘IO优化技巧大全
- 229浏览 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 542次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 511次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 498次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 484次学习
-
- 千音漫语
- 千音漫语,北京熠声科技倾力打造的智能声音创作助手,提供AI配音、音视频翻译、语音识别、声音克隆等强大功能,助力有声书制作、视频创作、教育培训等领域,官网:https://qianyin123.com
- 152次使用
-
- MiniWork
- MiniWork是一款智能高效的AI工具平台,专为提升工作与学习效率而设计。整合文本处理、图像生成、营销策划及运营管理等多元AI工具,提供精准智能解决方案,让复杂工作简单高效。
- 146次使用
-
- NoCode
- NoCode (nocode.cn)是领先的无代码开发平台,通过拖放、AI对话等简单操作,助您快速创建各类应用、网站与管理系统。无需编程知识,轻松实现个人生活、商业经营、企业管理多场景需求,大幅降低开发门槛,高效低成本。
- 159次使用
-
- 达医智影
- 达医智影,阿里巴巴达摩院医疗AI创新力作。全球率先利用平扫CT实现“一扫多筛”,仅一次CT扫描即可高效识别多种癌症、急症及慢病,为疾病早期发现提供智能、精准的AI影像早筛解决方案。
- 155次使用
-
- 智慧芽Eureka
- 智慧芽Eureka,专为技术创新打造的AI Agent平台。深度理解专利、研发、生物医药、材料、科创等复杂场景,通过专家级AI Agent精准执行任务,智能化工作流解放70%生产力,让您专注核心创新。
- 162次使用
-
- 命令行工具:应对Linux服务器安全挑战的利器
- 2023-10-04 501浏览
-
- 如何使用Docker进行容器的水平伸缩和负载均衡
- 2023-11-07 501浏览
-
- linux .profile的作用是什么
- 2024-04-07 501浏览
-
- 如何解决s权限位引发postfix及crontab异常
- 2024-11-21 501浏览
-
- 如何通过脚本自动化Linux上的K8S安装
- 2025-02-17 501浏览