色偷偷91综合久久噜噜-色偷偷成人-色偷偷尼玛图亚洲综合-色偷偷人人澡久久天天-国内精品视频一区-国内精品视频一区二区三区

Hello! 歡迎來到小浪云!


重要的MySQL 文檔存儲知識點掃盲


avatar
小浪云 2024-11-06 218

重要的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,否則服務器會報錯;但開發者可以自由使用這些空間。

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("  All 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 . " "; // Connect as a Node Session ? $nodeSession = mysql_xdevapigetNodeSession($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、JavaPythonJavaScript 等,未來還會有更多支持的語言。

從兩種方式受益

我會告訴你使用 NoSQL 方式錄入的數據也可以用 SQL 方式使用?換句話說,我會告訴你新引入的 NoSQL 方式可以訪問舊式關系型表中的數據?現在使用 MySQL 服務器有多種方式,作為 SQL 服務器,作為 NoSQL 服務器或者同時作為兩者。

相關閱讀

主站蜘蛛池模板: 国产视频99| 国产精品久久永久免费 | 久久99精品综合国产首页 | 永久看日本大片免费35分钟 | a4yy私人毛片 | 日韩精品一区二区三区免费 | 国产片一级| h版欧美一区二区三区四区 h片在线播放免费高清 | 美女黄页网站免费进入 | 一级做a爰毛片 | 2019亚洲日韩新视频 | 亚洲性视频网站 | 色综合综合在线 | 性欧美大战久久久久久久野外黑人 | 武侠古典 91 色综合 | 综合网激情五月 | 黄色毛片在线观看 | 黄色片一级毛片 | 九九久久99综合一区二区 | 久久久久女人精品毛片 | 亚洲男人的天堂久久无 | 四虎永久在线精品2022 | 一区二区在线免费观看 | 天天爽天天爱 | 久久伊人精品综合观看99 | 久久国产乱子伦精品免费强 | 日韩福利片午夜在线观看资源 | 日韩专区一区 | 狠狠亚洲婷婷综合色香五 | 日韩一区二区久久久久久 | 久久精品成人免费看 | 日韩免费一区二区 | 久久成人免费网站 | 最新亚洲精品国自产在线观看 | 最新三级网址 | 日本三级香港三级人妇网站 | 热er99久久6国产精品免费 | 欧美黄色免费在线观看 | 日本三级和搜子同屋的日子2 | 毛片免费毛片一级jjj毛片 | 在线观看黄视频 |