自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

不像MySQL的MySQL:MySQL文檔存儲(chǔ)介紹

數(shù)據(jù)庫(kù) MySQL
MySQL 可以提供 NoSQL JSON 文檔存儲(chǔ)Document Store了,這樣開(kāi)發(fā)者保存數(shù)據(jù)前無(wú)需規(guī)范化normalize數(shù)據(jù)、創(chuàng)建數(shù)據(jù)庫(kù),也無(wú)需在開(kāi)發(fā)之前就制定好數(shù)據(jù)樣式。


MySQL 文檔存儲(chǔ) 可以跳過(guò)底層數(shù)據(jù)結(jié)構(gòu)創(chuàng)建、數(shù)據(jù)規(guī)范化和其它使用傳統(tǒng)數(shù)據(jù)庫(kù)時(shí)需要做的工作,直接存儲(chǔ)數(shù)據(jù)。


MySQL 可以提供 NoSQL JSON 文檔存儲(chǔ)Document Store了,這樣開(kāi)發(fā)者保存數(shù)據(jù)前無(wú)需規(guī)范化normalize數(shù)據(jù)、創(chuàng)建數(shù)據(jù)庫(kù),也無(wú)需在開(kāi)發(fā)之前就制定好數(shù)據(jù)樣式。從 MySQL 5.7 版本和 MySQL 8.0 版本開(kāi)始,開(kāi)發(fā)者可以在表的一列中存儲(chǔ) JSON 文檔。由于引入 X DevAPI,你可以從你的代碼中移除令人不爽的結(jié)構(gòu)化查詢(xún)字符串,改為使用支持現(xiàn)代編程設(shè)計(jì)的 API 調(diào)用。

系統(tǒng)學(xué)習(xí)過(guò)結(jié)構(gòu)化查詢(xún)語(yǔ)言(SQL)、關(guān)系理論relational theory、集合set和其它關(guān)系數(shù)據(jù)庫(kù)底層理論的開(kāi)發(fā)者并不多,但他們需要一個(gè)安全可靠的數(shù)據(jù)存儲(chǔ)。如果數(shù)據(jù)庫(kù)管理人員不足,事情很快就會(huì)變得一團(tuán)糟,

??MySQL 文檔存儲(chǔ)?? 允許開(kāi)發(fā)者跳過(guò)底層數(shù)據(jù)結(jié)構(gòu)創(chuàng)建、數(shù)據(jù)規(guī)范化和其它使用傳統(tǒng)數(shù)據(jù)庫(kù)時(shí)需要做的工作,直接存儲(chǔ)數(shù)據(jù)。只需創(chuàng)建一個(gè) JSON 文檔集合document collection,接著就可以使用了。

 

JSON 數(shù)據(jù)類(lèi)型

所有這一切都基于多年前 MySQL 5.7 引入的 JSON 數(shù)據(jù)類(lèi)型。它允許在表的一行中提供大約 1GB 大小的列。數(shù)據(jù)必須是有效的 JSON,否則服務(wù)器會(huì)報(bào)錯(cuò);但開(kāi)發(fā)者可以自由使用這些空間。

 

X DevAPI

舊的 MySQL 協(xié)議已經(jīng)歷經(jīng)差不多四分之一個(gè)世紀(jì),已經(jīng)顯現(xiàn)出疲態(tài),因此新的協(xié)議被開(kāi)發(fā)出來(lái),協(xié)議名為 ??X DevAPI??。協(xié)議引入高級(jí)會(huì)話(huà)概念,允許代碼從單臺(tái)服務(wù)器擴(kuò)展到多臺(tái),使用符合通用主機(jī)編程語(yǔ)言樣式common host-language programming patterns的非阻塞異步 I/O。需要關(guān)注的是如何遵循現(xiàn)代實(shí)踐和編碼風(fēng)格,同時(shí)使用 CRUD (Create、 Read、 Update、 Delete)樣式。換句話(huà)說(shuō),你不再需要在你精美、純潔的代碼中嵌入丑陋的 SQL 語(yǔ)句字符串。

一個(gè)新的 shell 支持這種新協(xié)議,即所謂的 ??MySQL Shell??。該 shell 可用于設(shè)置高可用集群high-availability cluster、檢查服務(wù)器升級(jí)就緒狀態(tài)upgrade readiness以及與 MySQL 服務(wù)器交互。支持的交互方式有以下三種:JavaScript,Python 和 SQL。

 

代碼示例

下面的代碼示例基于 JavaScript 方式使用 MySQL Shell,可以從 ??JS>?? 提示符看出。

下面,我們將使用用戶(hù) ??dstokes??? 、密碼 ??password??? 登錄本地系統(tǒng)上的 ??demo??? 庫(kù)。??db??? 是一個(gè)指針,指向 ??demo?? 庫(kù)。

$ mysqlsh dstokes:password@localhost/demo

JS> db.createCollection("example")

JS> db.example.add(

{

Name: "Dave",

State: "Texas",

foo : "bar"

}

)

JS>

在上面的示例中,我們登錄服務(wù)器,連接到 ??demo??? 庫(kù),創(chuàng)建了一個(gè)名為 ??example?? 的集合,最后插入一條記錄;整個(gè)過(guò)程無(wú)需創(chuàng)建表,也無(wú)需使用 SQL。只要你能想象的到,你可以使用甚至濫用這些數(shù)據(jù)。這不是一種代碼對(duì)象與關(guān)系語(yǔ)句之間的映射器,因?yàn)椴](méi)有將代碼映射為 SQL;新協(xié)議直接與服務(wù)器層打交道。

 

Node.js 支持

新 shell 看起來(lái)挺不錯(cuò),你可以用其完成很多工作;但你可能更希望使用你選用的編程語(yǔ)言。下面的例子使用 ??world_x??? 示例數(shù)據(jù)庫(kù),搜索 ??_id??? 字段匹配 ??CAN.??? 的記錄。我們指定數(shù)據(jù)庫(kù)中的特定集合,使用特定參數(shù)調(diào)用 ??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");

// 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);

?>

可以看出,在上面兩個(gè)使用不同編程語(yǔ)言的例子中,??find?? 操作符的用法基本一致。這種一致性對(duì)跨語(yǔ)言編程的開(kāi)發(fā)者有很大幫助,對(duì)試圖降低新語(yǔ)言學(xué)習(xí)成本的開(kāi)發(fā)者也不無(wú)裨益。

支持的語(yǔ)言還包括 C、Java、Python 和 JavaScript 等,未來(lái)還會(huì)有更多支持的語(yǔ)言。

 

從兩種方式受益

我會(huì)告訴你使用 NoSQL 方式錄入的數(shù)據(jù)也可以用 SQL 方式使用?換句話(huà)說(shuō),我會(huì)告訴你新引入的 NoSQL 方式可以訪(fǎng)問(wèn)舊式關(guān)系型表中的數(shù)據(jù)?現(xiàn)在使用 MySQL 服務(wù)器有多種方式,作為 SQL 服務(wù)器,作為 NoSQL 服務(wù)器或者同時(shí)作為兩者。 

責(zé)任編輯:龐桂玉 來(lái)源: Linux中國(guó)
相關(guān)推薦

2018-06-14 14:45:51

MySQLOracle文檔存儲(chǔ)

2019-05-07 16:19:03

MySQL存儲(chǔ)引擎

2011-01-21 17:28:37

Zimbra

2023-11-09 09:26:22

MySQL存儲(chǔ)引擎

2010-10-12 16:29:02

MySQL權(quán)限表

2010-10-09 16:04:11

MySQL DATED

2010-10-08 13:53:14

2010-10-09 15:07:35

MySQL日期

2020-11-26 10:33:44

MySQL存儲(chǔ)函數(shù)

2022-08-18 08:24:19

Mysql數(shù)據(jù)庫(kù)

2010-06-01 15:09:55

MySQL 存儲(chǔ)過(guò)程

2021-08-10 14:29:06

MySQL數(shù)據(jù)庫(kù)存儲(chǔ)

2019-01-02 13:03:53

MySQL存儲(chǔ)權(quán)限

2010-11-24 13:18:05

MySQL表管理

2010-10-15 11:16:52

MySQL Show語(yǔ)

2021-10-15 06:43:11

數(shù)據(jù)庫(kù)存儲(chǔ)過(guò)程

2010-10-08 16:55:44

MySql存儲(chǔ)過(guò)程

2010-05-19 14:03:41

MySQL 存儲(chǔ)過(guò)程

2010-10-09 16:26:59

mysql存儲(chǔ)過(guò)程

2018-04-18 09:18:44

數(shù)據(jù)庫(kù)MySQL存儲(chǔ)過(guò)程
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)