資料儲存優化 (一):儲存格式對比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。
相關推薦
資料儲存優化 (一):儲存格式對比Json、ProtocolBuffer
對比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(