北京Linux培訓
達內北京天壇中心

010-62126400

北京linux培訓 > 疑難解答 >谷歌這個開源數據庫真牛,竟然還上Github熱榜~

谷歌這個開源數據庫真牛,竟然還上Github熱榜~

  • 時間:2021-06-02 10:17
  • 發布:北京linux培訓
  • 來源:疑難解答

谷歌這個開源的數據庫真牛,竟然還上Github熱榜~下面和達內北京Linux培訓機構一起來看看吧~

今天要和大家分享一個谷歌開源多年,但依舊扛打,最近還登上Github熱榜的kv數據庫——LevelDB。

Leveldb是一個google實現的非常高效的kv數據庫,創建者是大名鼎鼎的 Jeff Dean 和 Sanjay Ghemawat,目前的版本1.2能夠支持billion級別的數據量了。在這個數量級別下還有著非常高的性能,主要歸功于它的良好的設計。

LevelDB 是單進程的服務,性能非常之高,在一臺4個Q6600的CPU機器上,每秒鐘寫數據超過40w,而隨機讀的性能每秒鐘超過10w。具有以下功能特性:

key和value可以是字符串或者字節流

數據按key排列,有序存儲

調用方可以重載排序方法,以實現自定義排序

基本操作只有3種:Put(key, value)、Get(key)、Delete(key)

提供原子批量修改接口

支持數據快照

支持向前和向后的迭代器

支持數據自動壓縮,使用的是snappy壓縮算法

和操作系統之間的外部交互是通過虛接口(virtual interface)來進行,這樣用戶就能定制化這些交互了

levelDB特牛,但是,再好的工具也有它的局限性,LevelDB 的局限性也很明顯:

這不是一個 SQL 數據庫,它沒有關系數據模型,不支持 SQL 查詢,也不支持索引。

同時只能有一個進程(可能是具有多線程的進程)訪問一個特定的數據庫。

該程序庫沒有內置的 client-server 支持,有需要的用戶必須自己封裝。

# LevelDB的使用方法

打開數據庫

leveldb數據庫的名稱與文件系統目錄相對應。數據庫的所有內容都存儲在此目錄中。以下示例顯示了如何打開數據庫:

#include

#include "leveldb/db.h"

leveldb::DB* db;

leveldb::Options options;

options.create_if_missing = true;

leveldb::Status status = leveldb::DB::Open(options, "/tmp/testdb", &db);

assert(status.ok());

...

如果要在數據庫已經存在的情況下引發錯誤,請在leveldb::DB::Open調用之前添加以下行:

options.error_if_exists = true;

關閉數據庫

完成數據庫操作后,只需刪除數據庫對象。例子:

... open the db as described above ...

... do something with db ...

delete db;

讀寫

數據庫提供了Put,Delete和Get方法來修改/查詢數據庫。如下:

std::string value;

leveldb::Status s = db->Get(leveldb::ReadOptions(), key1, &value);

if (s.ok()) s = db->Put(leveldb::WriteOptions(), key2, value);

if (s.ok()) s = db->Delete(leveldb::WriteOptions(), key1);

并發

一個數據庫同時只能被一個進程打開。leveldb 會從操作系統獲取一把鎖來防止多進程同時打開同一個數據庫。在單個進程中,同一個 leveldb::DB 對象可以被多個并發線程安全地使用,也就是說,不同的線程可以在不需要任何外部同步原語的情況下,寫入、獲取迭代器或者調用 Get(leveldb 實現會確保所需的同步)。但是其它對象,比如 Iterator 或者 WriteBatch 需要外部自己提供同步保證,如果兩個線程共享此類對象,需要使用自己的鎖進行互斥訪問。具體見對應的頭文件。

目前,leveldb已經在Github上標星 24.2K,累計標星 5.3K(Github地址:https://github.com/google/leveldb)

對于想學互聯網技術卻又不敢貿然行動的同學,可報名達內免費試聽課,這是你免費了解、學習的技術最佳途徑,體驗名師面對面教導,多年實戰經驗傾囊相授,少走彎路,零基礎快速入門到精通!

學互聯網技術不能猶豫,否則你就和高薪擦肩而過了。不論你是0基礎還是轉行,在達內北京Linux培訓機構都有大牛老師手把手教你學習最新熱門技術,找一份自己滿意的高薪工作。

上一篇:年薪8萬 ↑↑↑ 年薪50萬,運維升級技能路線!
下一篇:沒有下一篇了

馬上預約七天免費體驗課

姓名:

電話:

年薪8萬 ↑↑↑ 年薪50萬,運維升級技能路線!

達內北京Linux培訓班:運維都需要考些什么證書?

5 個 https 誤區,運維得時刻注意!

運維工程師的“錢途”,靠什么決定?

  • 關注微信公眾號

    回復關鍵字:視頻資料

    免費領取 達內課程視頻學習資料

  • 視頻學習QQ群

    添加QQ群:1143617948

    免費領取達內課程視頻學習資料

Copyright ? 2018 Tedu.cn All Rights Reserved 京ICP備08000853號-56 京公網安備 11010802029508號 達內時代科技集團有限公司 版權所有

選擇城市和中心
江西省

貴州省

廣西省

海南省

A片在线观看全免费-免费A片在线网站大全高清