Как вы организуете ведра в Riak? - PullRequest
3 голосов
/ 25 мая 2011

Поскольку Riak использует сегменты как способ разделения ключей, возможно ли, чтобы сегменты были внутри блоков?Если нет, то как можно организовать организацию Riak со множеством блоков для нескольких приложений.

Основная проблема заключается в том, как можно представить «базы данных» и «таблицы» в Riak.Так как контейнер переводит в таблицу, что переводится в базу данных?

Пространства имен в языках программирования обычно имеют иерархии.Для сегментов Riak имеет смысл также разрешать иерархии, поскольку сегменты, по сути, являются пространствами имен.

1 Ответ

10 голосов
/ 26 мая 2011

Вы должны думать о 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>>
...