3

由于 Riak 使用桶作为分离键的一种方式,桶中是否可以有桶?如果不是,如何为多个应用程序组织一个包含多个存储桶的 Riak 设置。

基本问题是如何在 Riak 中表示“数据库”和“表”。既然桶转化为表,那么什么转化为数据库?

编程语言中的命名空间通常具有层次结构。Riak 存储桶也允许层次结构是有意义的,因为存储桶本质上是命名空间。

4

1 回答 1

10

您需要将Riak视为非常大的key -> value“表”,其中桶只是键的前缀。现在,当您知道可以对存储桶做任何事情时,只要它们仍然是二进制对象。

您可以创建线性“表格”:

<<"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>>
于 2011-05-26T15:51:15.483 回答