日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

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

新聞中心

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

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

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

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

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

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

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

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

1. 對象查詢

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

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ù)庫取數(shù)指南

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

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

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

2. 使用正確的查詢語句

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

3. 理解索引

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

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

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

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

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

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

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

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

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

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

首先我們來看如何在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類型。這意味著我們可以對插入的數(shù)據(jù)做ON格式檢查,確保其符合ON格式的約束,如插入一條不合法的ON數(shù)據(jù)會報如下錯誤:

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字符,而不是需要遍歷所有字符來查找,這不得不說是對MariaDB dynamic column的巨大改進:

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)然,最令人的激動的功能應(yīng)該是MySQL 5.7的虛擬列功能,通過傳統(tǒng)的B+樹索引即可實現(xiàn)對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

然后可以通過添加的索引對用戶名進行快速的查詢,這和普通類型的列查詢一樣。而通過explain可以驗證優(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對于ON格式堪稱完美,相信PostgreSQL陣營需要尋找新的策略來“攻擊”MySQL了吧。如無意外,還是會停留在優(yōu)化器這塊,畢竟這塊是目前MySQL必須要克服的更大問題,好在MySQL團隊已經(jīng)在重構(gòu)優(yōu)化器代碼,相信更好的優(yōu)化器將會在下一個版本中全面爆發(fā)。而一大堆文檔數(shù)據(jù)庫們已經(jīng)哭暈在廁所了吧。

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

舉例一

我們看下簡單的例子:

簡單定義一個兩級ON 對象

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

之一級:

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

第二級:

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)

舉例二

再來一個復(fù)雜點的例子,用的是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”:    }  }}’;

之一級:

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

第二級:

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

第三級:

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

第四級:

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)

那我們把這個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ì)的參考手冊。

請點擊輸入圖片描述

請點擊輸入圖片描述

關(guān)于怎么取json里的數(shù)據(jù)庫的介紹到此就結(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ù)器、虛擬主機、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗。專業(yè)提供云主機、虛擬主機、域名注冊、VPS主機、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。


標(biāo)題名稱:操作?json數(shù)據(jù)庫取數(shù)指南(怎么取json里的數(shù)據(jù)庫)
網(wǎng)站地址:http://m.5511xx.com/article/cocdijp.html