天天看點

**關于mysql5.7版本新特性介紹 ------資料類型 JSON**關于mysql5.7版本新特性介紹 ------資料類型 JSON

測試環境:

内容簡介:

随着mysql5.7版本的到來,大家對其的熱情也越來越高漲,身為mysql圈子裡的一員,我本身也對mysql5.7的一些新特性有所了解,通過學習了解到了很多新的特性,今天給大家介紹一下它在靈活性方面的一個新的功能:提供對JSON的支援

JSON介紹

通俗的講就是,JSON資料類型 可以存儲一些複雜的資料類型,例如字元串、數字、對象、數組等。将一些平時比較複雜的資料存儲,簡單化,便于人們存儲與閱讀。

JSON存儲方式:

對于時間類型的存儲

對于對象來說:一般使用鍵值對的方式存儲

一般JSON的存儲對象的格式是這樣的:

這很容易了解,等價于這條 JavaScript 語句:

Mysql支援JSON的原因:

随着非結構化資料存儲需求的持續增長,各種非結構化資料存儲的資料庫應運而生(如MongoDB)。從最新的資料庫使用 排行榜 來看,MongoDB已經超過了PostgreSQL,其火熱程度可見一斑。

各大關系型資料庫也不甘示弱,紛紛提供對JSON的支援,以應對非結構化資料庫的挑戰。MySQL資料庫從5.7.8版本開始,也提供了對JSON的支援。

MySQL對支援JSON的做法是,在server層提供了一堆便于操作JSON的函數,至于存儲,就是簡單地将JSON編碼成BLOB,然後交由存儲引擎層進行處理,也就是說,MySQL 5.7的JSON支援與存儲引擎沒有關系,MyISAM 存儲引擎也支援JSON 格式。

MySQL支援JSON以後,總是避免不了拿來與MongoDB進行一些比較。但是,MySQL對JSON的支援,至少有兩點能夠完勝MongoDB:

1.可以混合存儲結構化資料和非結構化資料,同時擁有關系型資料庫和非關系型資料庫的優點

2.能夠提供完整的事務支援

下面我在mysql中做一下對于JOSN的一些測驗,來實驗一下它的功能。

1.首先我建立了一個用JSON存儲的表

**關于mysql5.7版本新特性介紹 ------資料類型 JSON**關于mysql5.7版本新特性介紹 ------資料類型 JSON

2.插入資料

**關于mysql5.7版本新特性介紹 ------資料類型 JSON**關于mysql5.7版本新特性介紹 ------資料類型 JSON
**關于mysql5.7版本新特性介紹 ------資料類型 JSON**關于mysql5.7版本新特性介紹 ------資料類型 JSON

3.對json中資料進行測驗檢驗功能:

(1)先插入一條資料 做一下 group by的 實驗

**關于mysql5.7版本新特性介紹 ------資料類型 JSON**關于mysql5.7版本新特性介紹 ------資料類型 JSON
**關于mysql5.7版本新特性介紹 ------資料類型 JSON**關于mysql5.7版本新特性介紹 ------資料類型 JSON

(2)插入一條部分内容為空的資料,看一下JSON的相容性問題

**關于mysql5.7版本新特性介紹 ------資料類型 JSON**關于mysql5.7版本新特性介紹 ------資料類型 JSON

(3)建立索引

**關于mysql5.7版本新特性介紹 ------資料類型 JSON**關于mysql5.7版本新特性介紹 ------資料類型 JSON
**關于mysql5.7版本新特性介紹 ------資料類型 JSON**關于mysql5.7版本新特性介紹 ------資料類型 JSON

然後在确定一下是否走了索引

**關于mysql5.7版本新特性介紹 ------資料類型 JSON**關于mysql5.7版本新特性介紹 ------資料類型 JSON

确定了一下确實走了索引,

4.對于支援失事物的檢驗:

我想這就是為什麼mysql支援JSON後的優勢所在,它可以支援事物!

(1) 開啟事物檢視一下原表

**關于mysql5.7版本新特性介紹 ------資料類型 JSON**關于mysql5.7版本新特性介紹 ------資料類型 JSON

(2)插入一行資料

**關于mysql5.7版本新特性介紹 ------資料類型 JSON**關于mysql5.7版本新特性介紹 ------資料類型 JSON

Rollback一下

**關于mysql5.7版本新特性介紹 ------資料類型 JSON**關于mysql5.7版本新特性介紹 ------資料類型 JSON

經過以上的各個檢驗與驗證,測試了一些關于JSON的功能,個人覺得它支援的功能很強大,非常值得使用。

由此可見對于mysql來說,用JSON的方式存儲資料類似于‘表中表’,當業務資料變化非常快時,可以利用JSON來存儲,以此來提高資料庫的靈活性,當業務穩定下來時,通過之前寫入的tirgger , 每個json都運算json_extract(data,'$.name') ,然後寫到一個新的不可修改的列裡。是以MySQL添加的JSON資料類型讓關系資料庫用起來更簡單,并且模糊了SQL和NoSQL資料庫的界限。

缺點

JSON同樣也存在很多缺點:

JSON是一種非正式儲存資料的好方式。但是關系資料庫在标準化資料上很有強大,所有的資料都被标準化到小組成部分中來提高通路速度。并且,有的資料可能缺乏應用的嚴格性,比如當記錄一個電子郵件位址的時候,key值可能是email,eMail,e-mail,或者其他變體。