3
由於Riak使用桶作爲分隔鍵的方式,桶內是否有桶?如果不是的話,會怎麼組織一個有多個應用程序的許多存儲桶的Riak設置。你如何在Riak組織水桶?
最基本的問題是如何在Riak中代表「數據庫」和「表」。由於存儲桶轉換爲表格,什麼轉換爲數據庫?
編程語言中的命名空間通常具有層次結構。 Riak存儲區也允許層次結構是有意義的,因爲存儲區本質上是命名空間。
由於Riak使用桶作爲分隔鍵的方式,桶內是否有桶?如果不是的話,會怎麼組織一個有多個應用程序的許多存儲桶的Riak設置。你如何在Riak組織水桶?
最基本的問題是如何在Riak中代表「數據庫」和「表」。由於存儲桶轉換爲表格,什麼轉換爲數據庫?
編程語言中的命名空間通常具有層次結構。 Riak存儲區也允許層次結構是有意義的,因爲存儲區本質上是命名空間。
您需要考慮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>>