2011-05-25 70 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>>