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>>