日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
操作?json數(shù)據(jù)庫(kù)取數(shù)指南(怎么取json里的數(shù)據(jù)庫(kù))

操作?ON數(shù)據(jù)庫(kù)取數(shù)指南

隨著數(shù)據(jù)處理技術(shù)的不斷發(fā)展,各種不同的數(shù)據(jù)庫(kù)類型也應(yīng)運(yùn)而生。其中一種較為熱門的數(shù)據(jù)庫(kù)類型便是ON數(shù)據(jù)庫(kù)。這種數(shù)據(jù)庫(kù)以文本格式存儲(chǔ)數(shù)據(jù),相較于傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)而言,能更好的適應(yīng)各種應(yīng)用場(chǎng)景。本文將為大家講解如何操作ON數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)取數(shù),并為大家提供一份ON數(shù)據(jù)庫(kù)取數(shù)指南。

ON數(shù)據(jù)庫(kù)概述

ON數(shù)據(jù)庫(kù)是指能夠?qū)ξ谋靖袷降臄?shù)據(jù)進(jìn)行存取和處理的數(shù)據(jù)庫(kù)。ON數(shù)據(jù)庫(kù)采用某些方式來存儲(chǔ)ON文本數(shù)據(jù),并能夠在需要時(shí)自動(dòng)執(zhí)行查詢、過濾、排序以及其他數(shù)據(jù)處理功能。常見的ON數(shù)據(jù)庫(kù)包括MongoDB、CouchDB等。

ON數(shù)據(jù)庫(kù)的優(yōu)點(diǎn)在于它們能夠更好的存儲(chǔ)半結(jié)構(gòu)化數(shù)據(jù)。而在一些應(yīng)用場(chǎng)景下,半結(jié)構(gòu)化數(shù)據(jù)比結(jié)構(gòu)化數(shù)據(jù)更加適用。例如,在許多Web應(yīng)用程序中,數(shù)據(jù)是以O(shè)N格式進(jìn)行傳輸?shù)?。ON數(shù)據(jù)庫(kù)使得對(duì)這類數(shù)據(jù)進(jìn)行處理更為便捷。

ON數(shù)據(jù)庫(kù)的取數(shù)方式

為了從ON數(shù)據(jù)庫(kù)中取數(shù),需要使用一些特殊的查詢語句。在ON數(shù)據(jù)庫(kù)中,查詢語句是以O(shè)N格式進(jìn)行編寫的。以下是一些常見的ON數(shù)據(jù)庫(kù)查詢語句:

1. 對(duì)象查詢

對(duì)象查詢語句用于從ON文檔中查詢包含特定鍵值對(duì)的對(duì)象。例如,以下語句可以用于查詢一個(gè)名為customer的對(duì)象:

db.collection.find({name:“customer”})

2. 數(shù)組查詢

數(shù)組查詢語句用于從ON文檔中查詢特定值的數(shù)組。例如,以下語句可以用于查詢所有包含值“blue”的數(shù)組:

db.collection.find({colors: “blue”})

3. 操作符

操作符可以用于從ON文檔中查詢符合特定條件的數(shù)據(jù)。例如,以下語句可以用于查詢身高大于170cm的人:

db.collection.find({height: {$gt: 170}})

ON數(shù)據(jù)庫(kù)取數(shù)指南

ON數(shù)據(jù)庫(kù)的取數(shù)方式可能與傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)存在差異。以下是一份ON數(shù)據(jù)庫(kù)取數(shù)指南,幫助您更好的使用ON數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)取數(shù)。

1. 理解數(shù)據(jù)結(jié)構(gòu)

在將數(shù)據(jù)寫入ON數(shù)據(jù)庫(kù)之前,需要事先理解該數(shù)據(jù)的結(jié)構(gòu)。這是因?yàn)镺N數(shù)據(jù)庫(kù)是根據(jù)數(shù)據(jù)結(jié)構(gòu)進(jìn)行存儲(chǔ)和查找的。如果您能夠理解數(shù)據(jù)結(jié)構(gòu),那么您將可以更加輕松的編寫查詢語句。

2. 使用正確的查詢語句

無論是關(guān)系型數(shù)據(jù)庫(kù)還是ON數(shù)據(jù)庫(kù),查詢語句都是非常重要的。如果您使用不正確的查詢語句,就很可能無法從數(shù)據(jù)庫(kù)中獲取所需數(shù)據(jù)。因此,在編寫查詢語句時(shí),需要對(duì)查詢語句本身進(jìn)行深刻的理解。如果您對(duì)查詢語句存在不確定,可以參考一下其他開發(fā)者編寫的查詢語句。

3. 理解索引

索引是ON數(shù)據(jù)庫(kù)中重要的組成部分。索引能夠提高數(shù)據(jù)查詢的效率,在處理大量數(shù)據(jù)時(shí)至關(guān)重要。因此,在存儲(chǔ)大量數(shù)據(jù)時(shí),需要在合適的鍵上添加索引,以獲得更佳的查詢效率。

ON數(shù)據(jù)庫(kù)作為一種新型數(shù)據(jù)庫(kù)類型,具有很多傳統(tǒng)數(shù)據(jù)庫(kù)所不具備的優(yōu)勢(shì)。但是,在使用ON數(shù)據(jù)庫(kù)取數(shù)時(shí),需要理解ON數(shù)據(jù)庫(kù)的特點(diǎn),并使用正確的查詢語句和索引。期望上述ON數(shù)據(jù)庫(kù)取數(shù)指南能夠?qū)δ谌粘i_發(fā)工作中的工作帶來一些幫助。

相關(guān)問題拓展閱讀:

  • mysql怎么搜索json格式的數(shù)據(jù)

mysql怎么搜索json格式的數(shù)據(jù)

在MySQL與PostgreSQL的對(duì)比中,PG的ON格式支持優(yōu)勢(shì)總是不斷被拿來比較。其實(shí)早先MariaDB也有對(duì)非結(jié)構(gòu)化的數(shù)據(jù)進(jìn)行存儲(chǔ)的方案,稱為dynamic column,但是方案是通過BLOB類型的方式來存儲(chǔ)。這樣導(dǎo)致的問題是查詢性能不高,不能有效建立索引,與一些文檔數(shù)據(jù)庫(kù)對(duì)比,優(yōu)勢(shì)并不大,故在社區(qū)的反應(yīng)其實(shí)比較一般。當(dāng)然,MariaDB的dynamic column功能還不僅限于非結(jié)構(gòu)化數(shù)據(jù)的存儲(chǔ),但不在本文進(jìn)行展開。

MySQL 5.7.7 labs版本開始InnoDB存儲(chǔ)引擎已經(jīng)原生支持ON格式,該格式不是簡(jiǎn)單的BLOB類似的替換。原生的ON格式支持有以下的優(yōu)勢(shì):

ON數(shù)據(jù)有效性檢查:BLOB類型無法在數(shù)據(jù)庫(kù)層做這樣的約束性檢查

查詢性能的提升:查詢不需要遍歷所有字符串才能找到數(shù)據(jù)

支持索引:通過虛擬列的功能可以對(duì)ON中的部分?jǐn)?shù)據(jù)進(jìn)行索引

首先我們來看如何在MySQL中使用原生的ON格式:

mysql> create table user ( uid int auto_increment,

-> data json,primary key(uid))engine=innodb;

Query OK, 0 rows affected (0.01 sec)

mysql> insert into user values (NULL,

-> ‘{“name”:”David”,”mail”:””,”address”:”Shangahai”}’);

Query OK, 1 row affected (0.00 sec)

mysql> insert into user values (NULL,'{“name”:”Amy”,”mail”:””}’);

Query OK, 1 row affected (0.00 sec)

可以看到我們新建了表user,并且將列data定義為了ON類型。這意味著我們可以對(duì)插入的數(shù)據(jù)做ON格式檢查,確保其符合ON格式的約束,如插入一條不合法的ON數(shù)據(jù)會(huì)報(bào)如下錯(cuò)誤:

mysql> insert into user values (NULL,”test”);

ERROR 3130 (22023): Invalid ON text: “Invalid value” at position 2 in value (or column) ‘test’.

此外,正如前面所說的,MySQL 5.7提供了一系列函數(shù)來高效地處理ON字符,而不是需要遍歷所有字符來查找,這不得不說是對(duì)MariaDB dynamic column的巨大改進(jìn):

mysql> select jsn_extract(data, ‘$.name’),jsn_extract(data,’$.address’) from user;

+-+—+

| jsn_extract(data, ‘$.name’) | jsn_extract(data,’$.address’) |

+-+—+

| “David” | “Shangahai” |

| “Amy” | NULL |

+-+—+

2 rows in set (0.00 sec)

當(dāng)然,最令人的激動(dòng)的功能應(yīng)該是MySQL 5.7的虛擬列功能,通過傳統(tǒng)的B+樹索引即可實(shí)現(xiàn)對(duì)ON格式部分屬性的快速查詢。使用方法是首先創(chuàng)建該虛擬列,然后在該虛擬列上創(chuàng)建索引:

mysql> ALTER TABLE user ADD user_name varchar(128)

-> GENERATED ALWAYS AS (jsn_extract(data,’$.name’)) VIRTUAL;

Query OK, 0 rows affected (0.01 sec)

Records: 0 Duplicates: 0 Warnings: 0

mysql> select user_name from user;

++

| user_name |

++

| “Amy” |

| “David” |

++

2 rows in set (0.00 sec)

mysql> alter table user add index idx_username (user_name);

Query OK, 2 rows affected (0.01 sec)

Records: 2 Duplicates: 0 Warnings: 0

然后可以通過添加的索引對(duì)用戶名進(jìn)行快速的查詢,這和普通類型的列查詢一樣。而通過explain可以驗(yàn)證優(yōu)化器已經(jīng)選擇了在虛擬列上創(chuàng)建的新索引:

mysql> explain select * from user where user_name='”Amy”‘\G

*************************** 1. row ***************************

id: 1

select_type: SIMPLE

table: user

partitions: NULL

type: ref

possible_keys: idx_username

key: idx_username

key_len: 131

ref: const

rows: 1

filtered: 100.00

Extra: NULL

1 row in set, 1 warning (0.00 sec)

可以發(fā)現(xiàn)MySQL 5.7對(duì)于ON格式堪稱完美,相信PostgreSQL陣營(yíng)需要尋找新的策略來“攻擊”MySQL了吧。如無意外,還是會(huì)停留在優(yōu)化器這塊,畢竟這塊是目前MySQL必須要克服的更大問題,好在MySQL團(tuán)隊(duì)已經(jīng)在重構(gòu)優(yōu)化器代碼,相信更好的優(yōu)化器將會(huì)在下一個(gè)版本中全面爆發(fā)。而一大堆文檔數(shù)據(jù)庫(kù)們已經(jīng)哭暈在廁所了吧。

我們知道,ON是一種輕量級(jí)的數(shù)據(jù)交互的格式,大部分NO SQL數(shù)據(jù)庫(kù)的存儲(chǔ)都用ON。MySQL從5.7開始支持ON格式的數(shù)據(jù)存儲(chǔ),并且新增了很多ON相關(guān)函數(shù)。MySQL 8.0 又帶來了一個(gè)新的把ON轉(zhuǎn)換為TABLE的函數(shù)ON_TABLE,實(shí)現(xiàn)了ON到表的轉(zhuǎn)換。

舉例一

我們看下簡(jiǎn)單的例子:

簡(jiǎn)單定義一個(gè)兩級(jí)ON 對(duì)象

mysql> set @ytt='{“name”:}’;Query OK, 0 rows affected (0.00 sec)

之一級(jí):

mysql> select json_keys(@ytt);+—+| json_keys(@ytt) |+—+| |+—+1 row in set (0.00 sec)

第二級(jí):

mysql> select json_keys(@ytt,’$.name’);+-+| json_keys(@ytt,’$.name’) |+-+|    |+-+1 row in set (0.00 sec)

我們使用MySQL 8.0 的ON_TABLE 來轉(zhuǎn)換 @ytt。

mysql> select * from json_table(@ytt,’$.name’ columns (f1 varchar(10) path ‘$.a’, f2 varchar(10) path ‘$.b’)) as tt;

+++

| f1    | f2     |

+++

| ytt   | action |

| dble  | shard  |

| mysql | oracle |

+++

3 rows in set (0.00 sec)

舉例二

再來一個(gè)復(fù)雜點(diǎn)的例子,用的是EXPLAIN 的ON結(jié)果集。

ON 串 @json_str1。

set @json_str1 = ‘ {  “query_block”: {    “select_id”: 1,    “cost_info”: {      “query_cost”: “1.00”    },    “table”: {      “table_name”: “bigtable”,      “access_type”: “const”,      “possible_keys”: ,      “key”: “id”,      “used_key_parts”: ,      “key_length”: “8”,      “ref”: ,      “rows_examined_per_scan”: 1,      “rows_produced_per_join”: 1,      “filtered”: “100.00”,      “cost_info”: {“read_cost”: “0.00”,”eval_cost”: “0.20”,”prefix_cost”: “0.00”,”data_read_per_join”: “176”      },      “used_columns”:    }  }}’;

之一級(jí):

mysql> select json_keys(@json_str1) as ‘first_object’;+—+| first_object    |+—+| |+—+1 row in set (0.00 sec)

第二級(jí):

mysql> select json_keys(@json_str1,’$.query_block’) as ‘second_object’;++| second_object|++| |++1 row in set (0.00 sec)

第三級(jí):

mysql>  select json_keys(@json_str1,’$.query_block.table’) as ‘third_object’\G*************************** 1. row ***************************third_object: 1 row in set (0.01 sec)

第四級(jí):

mysql> select json_extract(@json_str1,’$.query_block.table.cost_info’) as ‘forth_object’\G*************************** 1. row ***************************forth_object: {“eval_cost”:”0.20″,”read_cost”:”0.00″,”prefix_cost”:”0.00″,”data_read_per_join”:”176″}1 row in set (0.00 sec)

那我們把這個(gè)ON 串轉(zhuǎn)換為表。

SELECT * FROM ON_TABLE(@json_str1,

“$.query_block”

COLUMNS(

rowid FOR ORDINALITY,

NESTED PATH ‘$.table’

COLUMNS (

a1_1 varchar(100) PATH ‘$.key’,

a1_2 varchar(100) PATH ‘$.ref’,

a1_3 varchar(100) PATH ‘$.filtered’,

nested path ‘$.cost_info’

columns (

a2_1 varchar(100) PATH ‘$.eval_cost’ ,

a2_2 varchar(100) PATH ‘$.read_cost’,

a2_3 varchar(100) PATH ‘$.prefix_cost’,

a2_4 varchar(100) PATH ‘$.data_read_per_join’

),

a3 varchar(100) PATH ‘$.key_length’,

a4 varchar(100) PATH ‘$.table_name’,

a5 varchar(100) PATH ‘$.access_type’,

a6 varchar(100) PATH ‘$.used_key_parts’,

a7 varchar(100) PATH ‘$.rows_examined_per_scan’,

a8 varchar(100) PATH ‘$.rows_produced_per_join’,

a9 varchar(100) PATH ‘$.key’

),

NESTED PATH ‘$.cost_info’

columns (

b1_1 varchar(100) path ‘$.query_cost’

),

c INT path “$.select_id”

)

) AS tt;

++——+++——+——+——+——+——+++——+——+——+——+——+——+

| rowid | a1_1 | a1_2  | a1_3   | a2_1 | a2_2 | a2_3 | a2_4 | a3   | a| a5    | a6   | a7   | a8   | a9   | b1_1 | c    |

++——+++——+——+——+——+——+++——+——+——+——+——+——+

|| id   | const | 100.00 | 0.20 | 0.00 | 0.00 | 176  | 8    | bigtable | const | id   | 1    | 1    | id   | NULL |    1 |

|| NULL | NULL  | NULL   | NULL | NULL | NULL | NULL | NULL | NULL     | NULL  | NULL | NULL | NULL | NULL | 1.00 |    1 |

++——+++——+——+——+——+——+++——+——+——+——+——+——+

2 rows in set (0.00 sec)

當(dāng)然,ON_table 函數(shù)還有其他的用法,我這里不一一列舉了,詳細(xì)的參考手冊(cè)。

請(qǐng)點(diǎn)擊輸入圖片描述

請(qǐng)點(diǎn)擊輸入圖片描述

關(guān)于怎么取json里的數(shù)據(jù)庫(kù)的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。

香港服務(wù)器選創(chuàng)新互聯(lián),2H2G首月10元開通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務(wù)提供商,擁有超過10年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機(jī)、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗(yàn)。專業(yè)提供云主機(jī)、虛擬主機(jī)、域名注冊(cè)、VPS主機(jī)、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。


網(wǎng)站題目:操作?json數(shù)據(jù)庫(kù)取數(shù)指南(怎么取json里的數(shù)據(jù)庫(kù))
URL分享:http://www.dlmjj.cn/article/cocdijp.html