astdb記憶體資料庫 核心詳解

2021-06-03 07:35:26 字數 958 閱讀 4056

主要資料結構

記憶體池資料結構:

#define circleq_head(name, type)	\

struct name

#define hashsize 256

typedef struct mpool

如圖:
hqh

記憶體頁結構:

typedef struct _pagepage;
如圖

關於記憶體頁需要關注其具體的部署,上述資料結構儲存於頁面的開始部分,從 linp 到頁面結束用於儲存實際的資料,同時這部分分為三個部分,靠近頁面開始的部分,即 linp 開始的部分是索引區,從頁面的最高端,即頁面結束的位址,向頁面開始方向是資料區,中間的部分是空閒區,空閒區使用 lower 和 upper 劃定區間,即如果以 end 標示頁面的最高位址 — 結束位址,則 linp-- ( *lower )是索引區,( *lower ) -- ( *upper )是空閒區,( *upper ) --end 是資料區;當向頁面中寫入資料時,首先按照資料的大小在空閒區分配相應的區間,分配方式是將( *upper )向( *lower )方向移動待存入資料大小的空間,然後,將此事 upper 指向的位址記錄下來,即索引的值,這就需要為索引分配乙個記憶體空間,分配的方式是將( *lower )向( *upper )方向移動存放位址的空間。如此完成了對儲存資料的分配,對資料的訪問通過 linp 即可取出對應的 index 的值,從而訪問需要的資料。至於訪問時如何知道資料的大小,資料的開始 4 個位元組構成的無符號整數記錄的資料的實際大小。
//		--摘自
db資料結構:

typedef struct __dbdb;
未完待續。。。

記憶體資料庫 TimesTen

timesten 就是一種針對記憶體進行了優化的關聯式資料庫,而且也可以完全當作乙個資料庫產品來用。如果你的資料量不是非常大,而且沒有一些特別的功能需求的話,你完全可以用timesten作為後台的資料庫,取代oracle db2 sybase 或 sqlserver等傳統的資料庫。只不過對times...

redis記憶體資料庫

一 snapshotting 快照 1 redis呼叫fork,現在有了子程序和父程序。2 子程序開始將資料寫到臨時rdb檔案中。3 當子程序完成寫rdb檔案,用新檔案替換老檔案。4 這種方式可以使redis使用copy on write技術。二 aof日誌 1 redis呼叫fork,現在有了子程...

timesten記憶體資料庫

為什麼現在記憶體型資料庫越來越流行,關注者和使用者越來越多呢?關鍵原因就是大家對隨著it系統的逐漸大規模使用,資料量越來越大,支撐的使用者也越來越多,導致系統越來越慢,使用者不滿意!如果你在去網上銀行做乙個轉賬操作,折騰了2分鐘後,告訴你,無法轉賬,然後你在執行一次,還是2分鐘後,告訴你系統無法完成...