999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

JSON數據傳輸效率研究

2011-09-07 10:16:42段會川
計算機工程與設計 2011年7期
關鍵詞:數據庫效率

高 靜, 段會川

(山東師范大學信息科學與工程學院,山東濟南250014)

0 引 言

選擇一種合適的數據傳輸格式是Web開發不可忽視的問題,而數據傳輸效率是非常重要的一個指標,因此對不同數據傳輸格式的傳輸效率進行研究就顯得尤為重要。目前,已有對XML和FSV格式的數據傳輸開銷的研究[1],而JSON序列化機制因易于編碼和便于機器解析而受到越來越多的關注,對JSON的數據傳輸開銷仍未有研究。本文將對XML、FSV及JSON從數據傳輸開銷、數據傳輸時間以及客戶端數據反序列化效率3個角度進行比較研究,以求給開發者選擇數據傳輸格式提供有力的參考依據。

1 JSON簡介

JSON作為一種輕量級的數據傳輸格式,可以在多種語言之間進行數據交換。JSON易于閱讀和編碼,且它是JavaScript規范的子集,能被支持JavaScript的瀏覽器所解析,相比XML,減少了解析時帶來的性能和兼容性問題,這些特性使JSON成為理想的數據交換語言。

1.1 JSON語法格式

JSON具有以下主要形式[2-3]:

(1)對象:是一個無序的“‘名稱/值’對”集合。一個對象以“{”開始,“}”結束,每個“名稱”后跟一個“:”,“名稱”使用““””括起來“‘名稱/值’”之間使用“,”將其分隔。圖1是JSON創建對象的格式。

圖1 對象格式

下面是一個簡單示例:

var user={"username":"andy","age":"20","sex":"female"}

這個對象包含了3個元素username;age;sex,它們的值分別是 andy;20;female。

(2)數組:是值的有序集合。一個數組以“[”開始,“]”結束,值之間使用“,”將其分隔。圖2是JSON創建數組的格式。

圖2 數組格式

下面是一個簡單示例:

var user=['lily','tom','sara']

這個例子表明,在數組user中包含3個元素‘lily’,‘tom’,‘sara’。

1.2 JSON序列化與反序列化

序列化(Serialization)是將對象狀態轉換為可保持或傳輸的格式的過程。與序列化相對的就是反序列化,它將流轉換為對象。這兩個過程結合起來,可以輕松地存儲和傳輸數據[4]。

首先服務器直接生成JavaScript語句,客戶端獲取后直接用eval方法來獲得這個對象。

var mydate=eval("("+dd+")");

通過上面這條語句就可以將從服務器獲得的JSON結果dd,轉換為JSON對象mydate。需要注意的是,要在這個字符串兩端套上小括號。然后客戶端通過 JavaScript引擎中的eval()函數反序列化JSON響應序列,使之運行在客戶的瀏覽器上。

2 數據傳輸開銷計算公式

數據傳輸過程中的開銷主要來源于屬性名稱、標簽及符號。以一個簡單的數據表為例,每一列即為一個屬性,如表1所示。

表1 數據表

RamonLawrence對XML及FSV數據傳輸的開銷公式[1]已有研究,假設對于任一屬性a,S表示a的最大模式(Schema),D表示a的數據值(Data),N表示屬性名稱(Name),E表示屬性值為空(Empty)的部分所占的比例。則FSV數據傳輸的開銷可表示為(S-D),即最大模式與數據值大小之差。

XML分為無空屬性XML和含空屬性XML兩類。若用XML描述第一條數據記錄的Tel屬性,可表示為。對于無空屬性XML,即當屬性值為空時,不創建元素,數據傳輸開銷表示為(2*N+5)*(1-E),5表示開關標簽符號(‘<’,‘>’,‘/’)共 5個。對于含空屬性 XML,即屬性值為空,但標簽及屬性名稱仍然保留,若第一條數據記錄的Tel屬性值為空,則用XML可表示為,此時相當于E=0,XML數據傳輸開銷為2*N+5。

對于JSON,也分為無空屬性JSON和含空屬性JSON兩類。若用JSON表示第一條數據記錄,可表示為 {“No”:“1”,“Sex”:“female”,“Tel”:“123”,“Age”:“10”}。對于每個屬性由于屬性名稱無需成對出現,只需一個表示,另外包含符號(‘"’,‘"’,‘:’,‘,’)共 6 個,因此,無空屬性JSON(當屬性值為空時,不創建元素),數據傳輸開銷可表示為(N+6)*(1-E)。對于含空屬性JSON(屬性值為空,但標簽仍然保留),若第一條數據記錄的 Tel屬性值為空,則可表示為 {“No”:“1”,“Sex”:“female”,“Tel”:“”,“Age”:“10”},即E=0時,JSON數據傳輸開銷為N+6。

經過以上分析,得出不同數據傳輸格式開銷計算公式如表2所示。

表2 數據傳輸開銷計算公式

3 實 驗

3.1 統計數據集

實驗所引用的統計數據集[1]如表3所示。這是RamonLawrence由Java程序DBstats通過JDBC連接樣例數據庫得來,其中樣例數據庫來自MicrosoftAccess的Northwind數據庫,以及UCI KDD和ML庫,還有一些互聯網上的公用數據庫。數據集分為模式級和數據級,取得了數據級屬性名稱(N),模式(S)及數據值(D)等數值的大小,所取數據均保留兩位有效數字。其中使用比例(D/S)表示數據值占模式大小的比例,未用比例(E)表示屬性值為空的部分所占的比例。

表3 統計數據集

由表中數據可發現,各數據庫屬性名稱(N)平均值大約為8,模式大小(S)平均值大約為20,數據值(D)平均值大約為7,數據值占模式大小的比例(D/S)平均值大約為40%,而屬性值為空的部分所占比例平均值大約為7%,這些數據對于分析數據傳輸開銷具有重要意義。為更直觀地表示,各樣例數據庫屬性名稱(N)、模式(S)及數據值(D)用折線圖如圖3所示。

圖3 樣例數據庫屬性名稱、模式、數據值比較

3.2 數據傳輸開銷比較

將上節中統計數據集的數據利用表2中各數據傳輸格式開銷公式計算,得到不同數據傳輸格式開銷,將數據進行整理如表4所示(表中數據均保留兩位有效數字)。

由于各樣例數據庫數據記錄集較大,實驗數據具有較強的精確性,而經過對同一數據庫數據記錄的不同數據傳輸格式傳輸,可以得到較為公正的結果。

表4中,以Northwind數據庫為例,已知N=8.96,S=15.24,D=6.86,則FSV數據傳輸開銷為S-D=8.38,含空屬性XML數據傳輸開銷為2*N+5=22.92,無空屬性XML數據傳輸開銷為(2*N+5)*(1-E)=22.29,含空屬性JSON數據傳輸開銷為N+6=14.96,無空屬性JSON數據傳輸開銷為(N+6)*(1-E)=14.55。以此類推,得到不同數據傳輸格式的開銷。為便于直觀比較,將不同數據傳輸格式的開銷以條形圖形式表示如圖4所示。

表4 不同數據傳輸格式開銷量化比較

圖4 不同數據傳輸格式開銷直觀比較

從以上圖表中可以看出:

(1)含空屬性JSON的開銷平均值為13.58,無空屬性JSON的開銷平均值為12.61,兩者之間相差0.97,均明顯小于任何一種XML的數據傳輸開銷平均值(20.16或18.73)。其中含空屬性JSON比含空屬性XML的開銷小6.58,無空屬性JSON比無空屬性XML的開銷小6.12。這正是JSON簡潔的數據描述格式相比XML復雜的格式標簽所帶來的優勢。

(2)FSV格式的開銷平均值為13.83,兩種JSON格式的數據傳輸開銷平均值均略低于FSV。

綜上,JSON的數據傳輸開銷是各數據傳輸格式中最小的。而數據傳輸開銷的減小必然會帶來數據傳輸效率的提高。雖然JSON的數據傳輸開銷與FSV相差無幾,但值得一提的是,JSON以其簡潔的編碼形式在數據描述方面明顯優于FSV。因此,JSON相比較XML與FSV,在數據傳輸開銷和數據描述簡潔性方面均成為一種理想的數據傳輸格式。

3.3 數據傳輸效率比較

為了更好的驗證JSON的數據傳輸效率優于其他數據傳輸格式,我們搭建一個實測環境,實驗通過對不同數據傳輸格式傳輸同一組數據庫記錄的時間進行比較,間接地比較了數據傳輸效率。由于網絡環境不穩定等原因,實驗數據會有一些波動,經過10次測試取平均值。實驗結果如表5所示。

表5 數據傳輸效率比較

經過分析表格中數據,大體上來看,以JSON格式傳輸數據所消耗的時間明顯短于以XML格式傳輸數據所消耗的時間,而略短于FSV傳輸數據消耗的時間。這是因為JSON生成文件的時候是利用JSON對象,使用Java String直接寫入腳本,而XML則要生成一個doc對象[6],用輸入輸出流的方式寫入XML文件。另外,無空屬性JSON傳輸數據所消耗的時間小于無空屬性JSON,無空屬性XML傳輸數據所消耗的時間小于含空屬性XML,這是因為當屬性值為空時,省略掉格式的標簽及符號,可以使傳輸負擔減小,這樣傳輸效率就相應提高了,傳輸時間也減短了。數據傳輸時間的比較再次證明JSON的數據傳輸效率優于其他數據傳輸格式。

3.4 客戶端數據反序列化效率

在客戶端,從服務器端傳輸過來JSON或XML的數據將被反序列化才能獲取其中的數據,進而顯示在客戶端頁面上。其中,XML是基于DOM樹結構的,反序列化XML需要考慮父節點和子節點,這為反序列化增加了難度。如下是一個典型的XML格式表示:

而JSON只需要通過JavaScript語言的eval()函數就可以將JSON數據反序列化為JavaScript對象。如下是上述XML示例對應的JSON格式:

反序列化JSON通常采用如下方法:

實驗通過一個簡單的測試程序分別對JSON或XML格式數據反序列化時間進行了比較分析,進而比較了兩種格式讀取數據時的反序列化效率。為消除偶然誤差,重復測驗10次,數據反序列化效率分析如圖5所示。

從圖5中可以看出,JSON反序列化時間明顯小于XML反序列化時間,這是與JSON和XML本身特殊的結構分不開的。采用JSON格式的數據大大降低了反序列化時的冗余度,使開發效率提高。若與AJAX技術相結合則會使即時頁面更新效果更加顯著,更好地提高用戶體驗。

4 結束語

圖5 XML和JSON數據反序列化效率分析

本文提出了JSON數據傳輸開銷計算公式。經過對JSON、XML及FSV這3種比較常用的數據傳輸格式的開銷、傳輸時間以及客戶端數據反序列化效率的量化比較,發現JSON的數據傳輸效率明顯優于其他數據傳輸格式,這為Web開發者對數據傳輸格式的選擇提供了更有力的參考。同時JSON便于閱讀和編碼,又是JavaScript規范的子集,便于機器解析,減少了解析XML帶來的性能和兼容性問題,因此,對于需考慮流量和網絡傳輸效率的環境以及輕量級的應用中,JSON應成為首選的數據傳輸格式。比如在移動應用開發中使用JSON結合AJAX的模式可以很好的解決移動設備帶寬受限及網絡流量要求較高的問題。

然而本文還有進一步需要提高的地方,針對數據傳輸的具體應用JSON的數據傳輸效率是否會一直優于其他數據傳輸格式,這是值得討論的。因此,有必要針對具體的開發環境更為詳細地討論JSON等數據傳輸格式的優缺點,這也正是我們后續工作的內容。

[1]Ramon Lawrence.The space efficiency of XML[J].Information and Software Technology,2004,46(4):753-759.

[2]Ali Mesbah,Arie van Deursen.A component-and push-based architectural style for AJAX applications[J].The Journal of Systems and Software,2008,81(12):2194-2209.

[3]張濤,黃強,毛磊雅,等.一個基于JSON的對象序列化算法[J].計算機工程與應用,2007,43(15):98-100.

[4]丁波,晁愛農.基于Struts2框架的AJAX開發研究[J].計算機工程與設計,2009,30(16):3910-3917.

[5]黃強,王薇,張曉梅,等.基于JSON和IoC的AJAX-RMI插件[J].計算機工程,2009,35(19):71-74.

[6]崔璨,倪宏.使用JSON對AJAX技術中的XML性能的優化仿真[J].通信技術,2009,42(8):108-114.

[7]王沛,謝俊元.基于總線模型和Json的AJAX安全開發模型[J].計算機工程與設計,2008,29(3):586-589.

[8]胡文發,白中英.基于J2EE/J2ME的JSON數據交換的探討[J].電子設計工程,2009,17(12):102-103.

[9]譚力,楊宗源,謝瑾奎.AJAX技術的數據響應優化[J].計算機工程,2010,36(7):52-54.

猜你喜歡
數據庫效率
提升朗讀教學效率的幾點思考
甘肅教育(2020年14期)2020-09-11 07:57:42
注意實驗拓展,提高復習效率
效率的價值
商周刊(2017年9期)2017-08-22 02:57:49
數據庫
財經(2017年15期)2017-07-03 22:40:49
數據庫
財經(2017年2期)2017-03-10 14:35:35
數據庫
財經(2016年15期)2016-06-03 07:38:02
數據庫
財經(2016年3期)2016-03-07 07:44:46
數據庫
財經(2016年6期)2016-02-24 07:41:51
跟蹤導練(一)2
“錢”、“事”脫節效率低
中國衛生(2014年11期)2014-11-12 13:11:32
主站蜘蛛池模板: 最新亚洲人成网站在线观看| 国产永久在线观看| 狠狠色噜噜狠狠狠狠色综合久 | 国产精品视频白浆免费视频| 国产高清在线精品一区二区三区| 色天天综合久久久久综合片| 无码专区国产精品第一页| 久久无码av一区二区三区| 热re99久久精品国99热| 911亚洲精品| 丁香五月激情图片| 国产欧美日本在线观看| 99热6这里只有精品| 国产三级视频网站| 久视频免费精品6| 国产第八页| 日本高清在线看免费观看| 亚洲日本精品一区二区| 亚洲综合一区国产精品| 91色在线视频| av一区二区三区高清久久| 91精品视频网站| 免费毛片a| 在线亚洲精品自拍| 六月婷婷激情综合| 四虎国产精品永久一区| 久久国产精品夜色| 日本亚洲国产一区二区三区| 91综合色区亚洲熟妇p| 国产精品短篇二区| 午夜视频在线观看免费网站| 欧美a在线视频| 精品五夜婷香蕉国产线看观看| 国产欧美综合在线观看第七页| 免费在线国产一区二区三区精品| 欧美亚洲一区二区三区导航| 又污又黄又无遮挡网站| 中文字幕av一区二区三区欲色| 亚洲综合久久一本伊一区| 亚洲熟女中文字幕男人总站| 国产网站在线看| 四虎永久免费地址| 欧美日韩在线亚洲国产人| 在线免费不卡视频| 毛片久久网站小视频| 97久久精品人人做人人爽| 97视频免费在线观看| 久久青草视频| 人妻91无码色偷偷色噜噜噜| 精品伊人久久久香线蕉| 亚洲中文字幕日产无码2021| 亚洲欧美成人在线视频| 中文字幕伦视频| 亚洲午夜福利在线| 国产精品久久精品| 久久精品视频亚洲| 中文字幕伦视频| 欧美日韩激情在线| 欧洲亚洲一区| 欧美日韩国产综合视频在线观看| 亚洲男人天堂2018| 91久久国产综合精品女同我| 秋霞午夜国产精品成人片| 亚洲综合中文字幕国产精品欧美| 真实国产精品vr专区| 无码粉嫩虎白一线天在线观看| 日本久久网站| 久久国产精品无码hdav| 欧美一级专区免费大片| 青青草久久伊人| 国产日韩精品一区在线不卡| 青青草原国产av福利网站| 91原创视频在线| 欧美成人手机在线观看网址| 久久夜色撩人精品国产| 国产乱人乱偷精品视频a人人澡| 亚洲国产天堂在线观看| 久久综合九九亚洲一区| 久久综合结合久久狠狠狠97色| 色香蕉网站| 欧美精品啪啪一区二区三区| 狼友av永久网站免费观看|