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

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

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
Json數(shù)據(jù)庫(kù)的優(yōu)勢(shì)及使用原因 (為什么用使用json數(shù)據(jù)庫(kù))

Json數(shù)據(jù)庫(kù)在近年來(lái)的技術(shù)發(fā)展中,已經(jīng)逐漸成為廣大開(kāi)發(fā)者的重要工具之一。由于其具有許多優(yōu)勢(shì),Json數(shù)據(jù)庫(kù)現(xiàn)已廣泛應(yīng)用于各種應(yīng)用軟件和系統(tǒng)中。本文就進(jìn)行深入探討,使讀者更好地了解Json數(shù)據(jù)庫(kù)及其在實(shí)際開(kāi)發(fā)中的應(yīng)用。

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)公司!專(zhuān)注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、微信小程序開(kāi)發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶(hù)創(chuàng)新互聯(lián)還提供了邕寧免費(fèi)建站歡迎大家使用!

一、Json數(shù)據(jù)庫(kù)的優(yōu)勢(shì)

1、易于操作

Json數(shù)據(jù)庫(kù)中的數(shù)據(jù)存儲(chǔ)方式與面向?qū)ο缶幊滔嗨?。因此,它?duì)于開(kāi)發(fā)者而言非常易于操作。相較于傳統(tǒng)數(shù)據(jù)庫(kù),Json數(shù)據(jù)庫(kù)的編寫(xiě)、測(cè)試和維護(hù)相對(duì)簡(jiǎn)單,易于使用。

2、數(shù)據(jù)結(jié)構(gòu)靈活

Json數(shù)據(jù)庫(kù)中可以存儲(chǔ)各種不同數(shù)據(jù)類(lèi)型(例如字符串、數(shù)字、布爾值、數(shù)組和對(duì)象等),可以快速適應(yīng)任何數(shù)據(jù)結(jié)構(gòu)的變化。此外,Json數(shù)據(jù)庫(kù)中的數(shù)據(jù)可以隨時(shí)進(jìn)行修改、刪除或添加,并且不需要復(fù)雜的SQL語(yǔ)句。

3、數(shù)據(jù)可讀性強(qiáng)

由于Json數(shù)據(jù)庫(kù)中的數(shù)據(jù)格式為鍵值對(duì),因此數(shù)據(jù)的可讀性更強(qiáng)。開(kāi)發(fā)人員可以輕松地閱讀Json數(shù)據(jù)庫(kù)中存儲(chǔ)的數(shù)據(jù),而無(wú)需使用SQL查詢(xún)語(yǔ)句。

4、數(shù)據(jù)查詢(xún)速度快

Json數(shù)據(jù)庫(kù)的查詢(xún)速度相對(duì)較快,因?yàn)閿?shù)據(jù)存儲(chǔ)為二進(jìn)制格式,可以快速進(jìn)行數(shù)據(jù)檢索。此外,Json數(shù)據(jù)庫(kù)還支持各種索引類(lèi)型(包括基于文本和基于位置的索引等不同類(lèi)型),可以更快地查找數(shù)據(jù)。

5、數(shù)據(jù)存儲(chǔ)量大

Json數(shù)據(jù)庫(kù)支持NoSQL數(shù)據(jù)庫(kù),可以處理大量數(shù)據(jù)的存儲(chǔ)和管理,而無(wú)需使用傳統(tǒng)數(shù)據(jù)庫(kù)查詢(xún)的繁瑣操作。傳統(tǒng)上,關(guān)系數(shù)據(jù)庫(kù)通常受到存儲(chǔ)數(shù)據(jù)的限制,但使用Json數(shù)據(jù)庫(kù)可以輕松地存儲(chǔ)大量的數(shù)據(jù)。

二、Json數(shù)據(jù)庫(kù)的使用原因

1、易于維護(hù)

Json數(shù)據(jù)庫(kù)的操作相對(duì)于傳統(tǒng)數(shù)據(jù)庫(kù)管理系統(tǒng),更加簡(jiǎn)單方便。因?yàn)镴son數(shù)據(jù)庫(kù)的存儲(chǔ)格式就是普通的文本,開(kāi)發(fā)者可以直接使用代碼讀取、修改、刪除或者添加數(shù)據(jù)。它無(wú)需使用復(fù)雜的SQL語(yǔ)句,也不需要使用特殊的數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)協(xié)議(如ODBC或JDBC)。

2、應(yīng)用場(chǎng)景廣泛

Json數(shù)據(jù)庫(kù)的使用場(chǎng)景較廣泛,適用于各種類(lèi)型的應(yīng)用軟件和系統(tǒng)。例如:網(wǎng)頁(yè)應(yīng)用程序,通訊軟件,游戲等等。在這些應(yīng)用中,Json數(shù)據(jù)庫(kù)可以快速處理、存儲(chǔ)和查詢(xún)數(shù)據(jù),從而改善系統(tǒng)性能并提高用戶(hù)體驗(yàn)。

3、數(shù)據(jù)安全可靠

Json數(shù)據(jù)庫(kù)可支持?jǐn)?shù)據(jù)備份和恢復(fù)特性。如果數(shù)據(jù)在某個(gè)時(shí)刻遭到損壞或丟失,可以使用此功能恢復(fù)原始數(shù)據(jù)。此外,Json數(shù)據(jù)庫(kù)還支持?jǐn)?shù)據(jù)空間的分離,使得開(kāi)發(fā)者可以輕松地控制數(shù)據(jù)的訪(fǎng)問(wèn)權(quán)限。

4、提高工作效率

Json數(shù)據(jù)庫(kù)的操作簡(jiǎn)單、快速,同時(shí)其靈活性極高,使開(kāi)發(fā)者能夠快速開(kāi)發(fā)高質(zhì)量的應(yīng)用程序。在Json數(shù)據(jù)庫(kù)的幫助下,開(kāi)發(fā)者們能夠更好的完成數(shù)據(jù)管理及處理任務(wù),提高工作效率。

5、免費(fèi)開(kāi)源

Json數(shù)據(jù)庫(kù)是一個(gè)開(kāi)放源碼軟件,完全免費(fèi)。不需要支付任何使用費(fèi)用,并且隨著技術(shù)的發(fā)展,開(kāi)源社區(qū)也在不斷完善和升級(jí) Json數(shù)據(jù)庫(kù)。

三、結(jié)論

綜上所述,Json數(shù)據(jù)庫(kù)具有易于操作、數(shù)據(jù)可讀性強(qiáng)、數(shù)據(jù)查詢(xún)速度快以及支持NoSQL數(shù)據(jù)庫(kù)等優(yōu)勢(shì)。同時(shí),Json數(shù)據(jù)庫(kù)的使用原因包括易于維護(hù)、應(yīng)用場(chǎng)景廣泛、數(shù)據(jù)安全可靠、提高工作效率以及免費(fèi)開(kāi)源等。Json數(shù)據(jù)庫(kù)的飛速發(fā)展也為開(kāi)發(fā)者們提供了更強(qiáng)的競(jìng)爭(zhēng)力。

Json數(shù)據(jù)庫(kù)的適用環(huán)境與傳統(tǒng)的數(shù)據(jù)庫(kù)有所不同,但并不是所有的應(yīng)用程序或者系統(tǒng)都適合使用 Json數(shù)據(jù)庫(kù)。開(kāi)發(fā)者們應(yīng)該充分考慮到自己的應(yīng)用場(chǎng)景,充分了解 Json數(shù)據(jù)庫(kù)的優(yōu)勢(shì)和限制,再謹(jǐn)慎選擇使用。

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

  • mysql使用什么類(lèi)型存json數(shù)據(jù)?

mysql使用什么類(lèi)型存json數(shù)據(jù)?

ON (JavaScriptObject Notation) 是一種輕量級(jí)的數(shù)據(jù)交換格式,主要用于傳送數(shù)據(jù)。ON采用了獨(dú)立于語(yǔ)言的文本格式,類(lèi)似XML,但是比XML簡(jiǎn)單,易讀并且易編寫(xiě)。對(duì)機(jī)器來(lái)說(shuō)易于仿悉鄭解析和生成,并且會(huì)減少網(wǎng)絡(luò)帶寬的傳輸。由于ON格式可以解耦javascript客戶(hù)端應(yīng)用與Restful服務(wù)器端的方法調(diào)用,因而在互聯(lián)網(wǎng)應(yīng)用中被大量使用。

ON的格式非常簡(jiǎn)單:名稱(chēng)/鍵值。之前MySQL版本里面要實(shí)現(xiàn)這樣的存儲(chǔ),要么用VARCHAR要么用TEXT大文本。 MySQL5.7發(fā)布后,專(zhuān)門(mén)設(shè)計(jì)了ON數(shù)據(jù)類(lèi)型以及關(guān)于這種類(lèi)型的檢索以及其他函數(shù)解析。我們先看看MySQL老版本的ON存取。

示例表結(jié)構(gòu):

CREATE TABLE json_test(

id INT,

person_desc TEXT

)ENGINE INNODB;

我們來(lái)插入一條記錄:

INSERT INTO json_test VALUES (1,'{

“programmers”:

“firstName”: “Brett”,

“l(fā)astName”: “McLaughlin”,

“email”: “aaaa”

}, {

“firstName”: “Jason”,

“l(fā)astName”: “Hunter”,

“email”: “bbbb”

}, {

“firstName”: “Elliotte”,

“l(fā)astName”: “Harold”,

“email”: “cccc”

}>,

“authors”:

“firstName”: “Isaac”,

“l(fā)astName”: “Asimov”,

“genre”: “sciencefiction”

}, {

“firstName”: “Tad”,

“l(fā)astName”: “Williams”,

“genre”:”fantasy”

}, {

“firstName”: “Frank”,

“l(fā)astName”: “Peretti”,

“genre”: “christianfiction”

}>,

“musicians”:

“firstName”: “Eric”,

“l(fā)astName”: “Clapton”,

“instrument”: “guitar”

}, {

“firstName”: “Sergei”,

“l(fā)astName”: “Rachmaninoff”,

“instrument”: “piano”

}>

}’);

那一般我們遇到這樣來(lái)存儲(chǔ)ON格式的話(huà),只能把這條記錄取出來(lái)交個(gè)應(yīng)用程序,由應(yīng)用程

來(lái)解析備頌。如此一來(lái)陸改,ON又和特定的應(yīng)用程序耦合在一起,其便利性的優(yōu)勢(shì)大打折扣。

現(xiàn)在到了MySQL5.7,可以支持對(duì)ON進(jìn)行屬性的解析,我們重新修改下表結(jié)構(gòu):

ALTER TABLE json_test MODIFY person_desc json;

先看看插入的這行ON數(shù)據(jù)有哪些KEY:

mysql> SELECT id,json_keys(person_desc) as “keys” FROM json_test\G

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

id: 1

keys:

1 row in set (0.00 sec)

我們可以看到,里面有三個(gè)KEY,分別為authors,musicians,programmers。那現(xiàn)在找一

KEY把對(duì)應(yīng)的值拿出來(lái):

mysql> SELECT json_extract(AUTHORS,’$.lastName’) AS ‘name’, AUTHORS FROM

-> (

-> SELECT id,json_extract(person_desc,’$.authors’) AS “authors” FROM json_test

->UNION ALL

-> SELECT id,json_extract(person_desc,’$.authors’) AS “authors” FROM json_test

-> UNION ALL

-> SELECT id,json_extract(person_desc,’$.authors’) AS “authors” FROM json_test

-> ) AS T1

-> ORDER BY NAME DESC\G

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

name:”Williams”

AUTHORS: {“genre”: “fantasy”,”lastName”: “Williams”, “firstName”:”Tad”}

*************************** 2. row***************************

name:”P(pán)eretti”

AUTHORS: {“genre”:”christianfiction”, “l(fā)astName”: “Peretti”,”firstName”:

“Frank”}*************************** 3. row***************************

name:”Asimov”

AUTHORS: {“genre”: “sciencefiction”,”lastName”: “Asimov”, “firstName”:”Isaac”}

3 rows in set (0.00 sec)

現(xiàn)在來(lái)把詳細(xì)的值羅列出來(lái):

mysql> SELECT

->json_extract(AUTHORS,’$.firstName’) AS “firstname”,

-> json_extract(AUTHORS,’$.lastName’)AS “l(fā)astname”,

-> json_extract(AUTHORS,’$.genre’) AS”genre”

-> FROM

-> (

-> SELECT id,json_extract(person_desc,’$.authors’)AS “authors” FROM json

_test

-> ) AS T\G

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

firstname: “Isaac”

lastname:”Asimov”

genre:”sciencefiction”

1 row in set (0.00 sec)

我們進(jìn)一步來(lái)演示把a(bǔ)uthors 這個(gè)KEY對(duì)應(yīng)的所有對(duì)象刪掉。

mysql> UPDATE json_test

-> SET person_desc =json_remove(person_desc,’$.authors’)\G

Query OK, 1 row affected (0.01 sec)

Rows matched: 1 Changed: 1  Warnings: 0

查找下對(duì)應(yīng)的KEY,發(fā)現(xiàn)已經(jīng)被刪除掉了。

mysql> SELECT json_contains_path(person_desc,’all’,’$.authors’)as authors_exists FROM

json_test\G

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

authors_exists: 0

1 row in set (0.00 sec)

總結(jié)下,雖然MySQL5.7開(kāi)始支持ON數(shù)據(jù)類(lèi)型,但是我建議如果要使用的話(huà),更好是把這的值取出來(lái),然后在應(yīng)用程序段來(lái)計(jì)算。畢竟數(shù)據(jù)庫(kù)是用來(lái)處理結(jié)構(gòu)化數(shù)據(jù)的,大量的未預(yù)先定義schema的json解析,會(huì)拖累數(shù)據(jù)庫(kù)的性能。

我們知道,ON是一種輕量級(jí)的數(shù)據(jù)交互的格式,大部分NO SQL數(shù)據(jù)庫(kù)的存儲(chǔ)都用ON。MySQL從5.7開(kāi)始支持ON格式的數(shù)據(jù)存儲(chǔ),并且新增了很多ON相關(guān)函數(shù)。MySQL 8.0 又閉畢帶來(lái)了一個(gè)新的把ON轉(zhuǎn)換為T(mén)ABLE的函數(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 來(lái)轉(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)

舉例二

再來(lái)一個(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)

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

成都網(wǎng)站設(shè)計(jì)制作選創(chuàng)新互聯(lián),專(zhuān)業(yè)網(wǎng)站建設(shè)公司。
成都創(chuàng)新互聯(lián)10余年專(zhuān)注成都高端網(wǎng)站建設(shè)定制開(kāi)發(fā)服務(wù),為客戶(hù)提供專(zhuān)業(yè)的成都網(wǎng)站制作,成都網(wǎng)頁(yè)設(shè)計(jì),成都網(wǎng)站設(shè)計(jì)服務(wù);成都創(chuàng)新互聯(lián)服務(wù)內(nèi)容包含成都網(wǎng)站建設(shè),小程序開(kāi)發(fā),營(yíng)銷(xiāo)網(wǎng)站建設(shè),網(wǎng)站改版,服務(wù)器托管租用等互聯(lián)網(wǎng)服務(wù)。


新聞標(biāo)題:Json數(shù)據(jù)庫(kù)的優(yōu)勢(shì)及使用原因 (為什么用使用json數(shù)據(jù)庫(kù))
地址分享:http://www.5511xx.com/article/codpppo.html