Data Model(數據模型)

Data Model(數據模型)

Aerospike採用無模式(schema-less)數據模型,這意味着存儲在庫中的數據不符合嚴格模式。

這提供了你在Aerospike中存儲數據的靈活性-數據修改不需要修改schema,庫中已存在的數據也不需要符合指定的schema

Aerospike的無模式(schema-less)數據模型允許動態添加新類型的bin。儘管如此,仍然需要遵守bin名稱與數據的對應關係。應用程序必須利用bin的一致性來保障查詢和聚合的正確性。

How Data is Organized(數據如何組織)



 
Storage architecture

Namespaces(命名空間)

命名空間(namespace)是數據最頂層的容器。就像在標準的RDBMS中一樣,namespace可以是數據庫的一部分也可以是一組數據庫,這決定於你如何存儲和管理namespace中的數據。

一個namespace包含記錄(records),索引(indexes )及策略(policies)。策略決定namespace的行爲,包括:

  • 數據如何存儲:存儲於內存或是磁盤
  • 一條記錄存在多少個副本
  • 記錄何時過期

更多關於namespace配置的信息請參看Configuring Namespaces

根據應用程序的需要,一個數據庫可能包含多個不同策略的多個namespace。namespace被認爲是一個物理容器,因爲其中的數據必須綁定存儲設備,存儲設備可能是內存、磁盤或者是文件。

圖1中,我們定義了兩個namespace分別命名爲ns1和 ns2。ns1將記錄存放在磁盤上,ns2將記錄存放在內存中。



 
 
圖1
定義兩個namespace,它們使用不同的存儲引擎

Sets(集合)

在命名空間(namespace)中,記錄可以屬於一個稱作集合(set)的邏輯容器。集合(set)爲應用程序提供了收集記錄組的能力。集合(set)繼承了包含它的namespace的策略,也可爲set指定其他的策略。

圖2中,爲ns1 namespace添加兩個集合,people和places。用於存儲基於類型的記錄。除了存儲於兩個集合中的記錄,namespace中有部分記錄不屬於任何set。



 
圖2
namspace ns1中定義兩個set,People和Place。ns1中也包含不屬於任何set的記錄
 

Records(記錄)

Aerospike數據庫是行存儲的所以焦點是獨立的記錄(在標準RDBMS中稱作行)。記錄是數據庫存儲的基本單元。行屬於某個namespace或者某個namespace中的set。記錄通過namespace中定義的唯一key來訪問。

記錄的組成如下:



組成 描述
key 記錄是通過一個哈希鍵進行訪問的,稱作摘要
metadata 元數據提供記錄的版本信息(代)以及活動時間(ttl)
bins (fields) bin相當於傳統數據中的字段

Key / Digest

應用程序中,每一條記錄都有一個用來訪問它的key。應用程序通過key來讀寫記錄。

當key被髮送至數據庫,key(與set信息一起)被哈希化成一個160位的摘要。數據庫中,摘要爲所有操作定位記錄。

key主要用於應用程序訪問,而摘要主要用於數據庫定位記錄。

key可能是整型,字符串或者二進制。細節請參閱Data Types.

Metadata(元數據)

每條記錄與描述它自身的元數據一塊存儲,包括下列事物:

  • generation(代)反映記錄被修改的次數。這個數字在應用程序讀的時候交回,用來確定正在寫入的數據從最後一次讀開始未被修改過。

  • 存活時間 (TTL) 用來指定記錄生存多長時間。Aerospike會自動依據記錄的TTL使其過期。每次在對象上執行寫操作TTL就會增加

Bins

在記錄(record)中數據被存儲於一個或多個bin。一個bin有名字和值組成。bin不指定類型,類型由bin中包含的值定義。

動態類型爲數據模型提供了很大的彈性。例如,一條記錄中包含值爲字符串"bob"名稱爲 "id"的bin。bin的值可以變成不同的字符串值,也可以變爲其他類型的值,比如整型的72.

namespace或set中的記錄可能由迥然不同的bin的集合組成。記錄無模式,所以每條記錄擁有完全不同的bins是有可能的。在記錄的生命週期中的任何時點都可以添加或移除bin

在一個namespace鍾bin名稱的數量是有限制的。最多32k個唯一bin名稱。

bin的值可能是任意原生支持的類型(native supported typesLDTs.

 

 譯者:北京IT爺們兒

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章