1. 程式人生 > >資料儲存優化 (一):儲存格式對比Json、ProtocolBuffer

資料儲存優化 (一):儲存格式對比Json、ProtocolBuffer

對比Json和ProtocolBuffer

1、JSON因為有一定的格式,並且是以字元存在的,在資料量上還有可以壓縮的空間。而ProtocolBuffer上大資料量時,空間比JSON小很多。
2、JSON各個庫之間的效率相差比較大,jackson庫和GSON就大概有5-10的差距。而ProtocolBuffer只需要一個,沒有所謂的多個庫的區別。

Json樣例:

{
    "DevInfo":{
        "SN":"Android",
        "DI":"863363036038592-460019031508084-144379774dc1c0b8",
        "IMSI
":"460019031508084", "MAC":"6c:5c:14:25:be:ba", "DBG":"0" }
}

ProtoBuffer樣例:

大小比對

fileName fileTyoe storageFormat fileSize
app.txt json textFile 195M
app.proto protobuffer textFile 91M
app_txt.tar.gz json gzip 1.8M
app_proto.tar.gz protobuffer gzip 640K

上面的表應該可以看得比較清楚了,在大資料的應用中proto是非常佔優勢的,資料都進行壓縮,proto約為json的1/3

相關推薦

資料儲存優化 ()儲存格式對比JsonProtocolBuffer

對比Json和ProtocolBuffer 1、JSON因為有一定的格式,並且是以字元存在的,在資料量上還有可以壓縮的空間。而ProtocolBuffer上大資料量時,空間比JSON小很多。

資料儲存優化 (二)具體優化方式

通過上一篇文章的分析發現在大資料的應用中proto在儲存方面優於Json。資料都進行壓縮,proto約為json的1/3 資料來源 1、日誌由前端SDK收集, 2、格式為Json

mysql優化資料查詢新增索引

一、索引是什麼? 索引是一種特殊的檔案(InnoDB資料表上的索引是表空間的一個組成部分),它們包含著對資料表裡所有記錄的引用指標。 更通俗的說,資料庫索引好比是一本書前面的目錄,能加快資料庫的查詢速度 二、索引目的 索引的目的在於提高查詢效率 三、索引原理 通過不斷的縮小想

Session的用途儲存使用者資訊

上一篇提到Session有幾種常用用法,這一篇主要是關於Session的儲存使用者資訊的用法。 前面用MVC模式設計了一個簡單的小系統。不知發現沒有,實現分頁效果時,為了顯示所登入的使用者名稱,每換一次頁面就得傳一次使用者名稱,顯得非常麻煩,引入Session物件就會使問題

Spark優化()避免重複RDD

避免建立重複的RDD 通常來說,我們在開發一個Spark作業時,首先是基於某個資料來源(比如Hive表或HDFS檔案)建立一個初始的RDD;接著對這個RDD執行某個運算元操作,然後得到下一個RDD,以此類推,迴圈往復,直到計算出最終我們需要的結果。   在這個過程中,多個RD

資料視覺化CSV格式JSON格式

1、下載CSV格式資料,進行視覺化 csv.reader()建立一個與檔案有關聯的閱讀器(reader)物件,reader處理檔案中的第一行資料,並將每一項資料都儲存在列表中 head_row = next(reader) 返回檔案的下一行,CSV檔案第一行為標頭檔案 datetime.strptime

Android 介面優化系統狀態列隱藏和拓展到狀態列

記得剛接手公司的專案的時候,系統狀態列是白的,字也是白的,隨後自己研究了一通,最終弄好了,還分為兩部分,主要是把背景拓展到狀態列下,並且不遮蓋狀態列的資訊。最後寫了一種可遮蓋掉整個狀態列 主要是通過setStatusBar來實現此功能,分為黑色跟白色兩種,白色即為預設顏色,不寫就行。 使用的

資料結構實驗順序表的驗證實驗

#ifndef SeqList_H #define SeqList_H const int MaxSize=10; class SeqList { public: SeqList(){length=0;} SeqList(int a[],int n); ~SeqList(){} v

HTTP協議篇()多路複用資料

管道機制、多路複用 管道機制(Pipelining)  HTTP 1.1 引入了管道機制(Pipelining),即客戶端可通過同一個TCP連線同時傳送多個請求。如果客戶端需要請求兩個資源,以前的做法是在同一個TCP連線裡面,先發送A請求,然後等待伺服器做出迴應,收到後再

資料結構實驗(1)(順序表)線性表的各種操作SqList

#include<iostream> #include<malloc.h> #include<cstdio> #define MAXSIZE 10 using namespace std; //typedef struct SqList

資料結構實驗線性表的基本操作

// 186658-S181-李雙源.cpp : 定義控制檯應用程式的入口點。 //時間 2018-10-27 //內容:線性表的基本操作 #include "stdafx.h" #include <iostream> #include<s

資料結構實驗

改進後的線性表 #include <iostream> #include<stdlib.h> using namespace std; typedef struct { int L[100]; int length; } SL

iview獲取全選和半選資料(方法基於樹型資料

在用iview的時候發現iview的樹中獲取半選和全選的函式getCheckedAndIndeterminateNodes在我使用的iview版本里面是沒有提供的, 於是自己寫了一下獲取全選和半選節點的資料 this.halfCheckData = [] checkData = this.$refs

資料庫效能優化SQL索引一步到位

SQL索引在資料庫優化中佔有一個非常大的比例, 一個好的索引的設計,可以讓你的效率提高几十甚至幾百倍,在這裡將帶你一步步揭開他的神祕面紗。   1.1 什麼是索引?   SQL索引有兩種,聚集索引和非聚集索引,索引主要目的是提高了SQL Server系統的效能,加快資

JS程式碼優化谷歌瀏覽器的timeline工具的使用

谷歌瀏覽器Timeline用法詳解: 大家都知道,谷歌瀏覽器自帶的相關工具是前端開發人員的利器。 點選F12會彈出一個介面,頂部帶有功能的選項卡,其中有幾個功能強大,但是相對較為複雜,比如Timeline,console和network。 (1).關於console的使用可以參閱谷歌控制檯console相關命

Java效能優化設計優化和程式優化,開發必備優化技巧!

現代大規模關鍵性系統中的Java效能調優,是一項富有挑戰的任務。你需要關注各種問題,包括演算法結構、記憶體分配模式以及磁碟和檔案I/O的使用方式。效能調優最困難的通常是找到問題所在,即便是經驗豐富的人也會被他們的直覺所誤導。效能殺手總是隱藏在最意想不到的地方。 Java效能問題一直困擾著廣大程式

Android 流量優化()模組化流量統計

有個使用者說一夜間跑了幾百兆的移動流量,流量是哪裡產生的?是不是哪裡有程式碼缺陷?怎樣定位到問題? 於是想著把流量劃分模組的統計下來,以便優化App的整體健康;    如果僅統計應用總流量,類提供的介面就足以實現了;    現在我們需要分析流量的成分,一直沒有發現比較好的方

vue慕課網音樂專案手記32-如何獲取歌詞的資料,並解析jsonp的格式json格式

首先:在qq音樂的官網,能看到如下的歌詞資料這是一個jsonp的資料,但是官方對它做了一些加密,所以還是要通過node去強制改變請求頭。新建一個song.jsimport { commonParams } from './config' import axios from '

android系統優化Android中的Handler總結

- 一、Handler的定義:           主要接受子執行緒傳送的資料, 並用此資料配合主執行緒更新UI.           解釋: 當應用程式啟動時,Android首先會開啟一個主執行緒 (也就是UI執行緒) , 主執行緒為管理介面中的UI控制元件,進行事件

mysql單表資料操作優化()

系統環境 window7+8g記憶體+250g硬碟+i5處理器+5000轉 1.建立表結構 CREATE TABLE `test` (   `uid` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增主鍵',   `zid` char(