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.pswp.cn/news/396541.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/396541.shtml
英文地址,請注明出處:http://en.pswp.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 作用:確保線程互斥的訪問同步代,鎖自動釋放,多個線程操作同個代碼塊或函數必須排隊獲得鎖,保證共享變量的修改能夠及時可見,獲得…