原创 .ipp文件是做什麼的

.ipp 文件爲什麼不寫成 .h 或者 .cpp文件 借鑑了C++ boost libray的做法,用於將模板的聲明與實現分開,因爲模板是在預編譯時進行處理的,所以不能放到.cpp文件裏面,所以就定義了.ipp文件。 將模板的

原创 ob爲什麼同時存在兩種迭代接口的代碼

(cell接口、row接口) oceanbase的早期版本類似於一個key-value no sql 系統,所以採用的是cell接口,讀寫是以cell爲基本單位。 oceanbase0.4以及後續的版本,才真正可以稱作一個數據庫

原创 oceanbase 與hbase主要區別

oceanbase支持跨表的事務,而hbase中支持跨行的事務,這是由他們的設計特別決定的。 updateserver實際上是將Hbase所有ReginonServer的memtable聚合在一起。 regionserver只服

原创 可變參數變量模板

可變參數變量其實利用的是循環迭代的設計思想,如下例子所示: public: template

原创 mysql 數據庫引擎

MySQL數 據庫引擎取決於MySQL在安裝的時候是如何被編譯的。要添加一個新的引擎,就必須重新編譯MYSQL。在缺省情況下,MYSQL支持三個引擎:ISAM、MYISAM和HEAP。另外兩種類型INNODB和BERKLEY(BD

原创 ob中內置join的意義

這個在0.5中應用,爲了解決收藏夾的問題,1.0後就沒有用了。 oceanbase中內置join的目的是爲了空間換時間,因爲在數據庫中,兩張表之間的join是非常耗時的,做法是在一張表中,冗餘另一張表的幾列,查詢的時候,只需要查

原创 LevelDb

LevelDb的MemTable提供了將KV數據寫入,刪除以及讀取KV記錄的操作接口,但是事實上Memtable並不存在真正的刪除操作,刪除某個Key的Value在Memtable內是作爲插入一條記錄實施的,但是會打上一個Key的

原创 LevelDb

LevelDb的MemTable提供了將KV數據寫入,刪除以及讀取KV記錄的操作接口,但是事實上Memtable並不存在真正的刪除操作,刪除某個Key的Value在Memtable內是作爲插入一條記錄實施的,但是會打上一個Key的

原创 c++中延遲初始化

僅僅在C++0x標準或gnu++ox標準中使用 -std=c++0x -std=gnu++0x 這兩個參數設置上後,纔能有延遲初始化,即參數在模板裏面初始化

原创 bloom filter 算法

集合數據結構一般都有這麼一個方法:contains。其作用就是判斷給定的元素是否存在在集合中,這是一個常用的方法。其最簡單的內部實現即遍歷集合內的元素,一個個的判斷是否與給定元素相等。爲了更高效點我們甚至可以採用”更好的(或者相對

原创 sstable

sstable種類包含statistic、bloomfilter、index、data。 按照 BigTable的定義,SSTable叫做 Sorted String Table.其本質上是一種文件格式用於存儲數據到磁盤上。 1、

原创 Cassandra--memtable SSTable

memtable是可以使用key來訪問的基礎的數據回寫緩存–並不是flush的時候,將membable完全寫入緩存。 將memtable寫入到sstable的過程叫做flush,當你想減少commitlog的消耗時間時,你可以啓動

原创 oceanbase中schema_manager

oceanbase中每個observer都有schema_manager這個結構體,包含schema_version標示當前schema的版本號。 假設現在有兩臺observer(obs0和obs1)一臺root server(利

原创 TODO

1、用pthread實現兩個線程(兩個線程加法,加到100) 2、用libmysql寫連接mysql數據庫的,實現增刪改查 3、用TCP+socket寫一個包在2臺機器之間的傳送 4、RPC請求學習 5、爲什麼用讀寫鎖,還有那些鎖