2011-05-25 69 views
3

由於Riak使用桶作爲分隔鍵的方式,桶內是否有桶?如果不是的話,會怎麼組織一個有多個應用程序的許多存儲桶的Riak設置。你如何在Riak組織水桶?

最基本的問題是如何在Riak中代表「數據庫」和「表」。由於存儲桶轉換爲表格,什麼轉換爲數據庫?

編程語言中的命名空間通常具有層次結構。 Riak存儲區也允許層次結構是有意義的,因爲存儲區本質上是命名空間。

回答

10

您需要考慮Riak作爲非常大的key -> value「表」其中buckets are only prefixes for keys。現在,當你知道只要它們仍然是二進制對象,就可以對桶進行任何操作。

您可以創建直線 「表」:

<<"table1">> 
<<"table2">> 

或者你也可以創建層次:

<<"db1.table1">> 
<<"db1.table2">> 
<<"db2.table1">> 
<<"db2.table2">> 

或者你甚至可以使用元組的水桶:

1> term_to_binary({"db1", "table1"}). 
<<131,104,2,107,0,3,100,98,49,107,0,6,116,97,98,108,101,49>> 
2> term_to_binary({"db1", "table2"}). 
<<131,104,2,107,0,3,100,98,49,107,0,6,116,97,98,108,101,50>> 
3> term_to_binary({"db2", "table1"}). 
<<131,104,2,107,0,3,100,98,50,107,0,6,116,97,98,108,101,49>> 
4> term_to_binary({"db2", "table2"}). 
<<131,104,2,107,0,3,100,98,50,107,0,6,116,97,98,108,101,50>>