我想弄清楚如何在 Riak 中对数据建模.假设您正在构建类似 CMS 的东西有两个特点,新闻和产品。您需要能够为多个客户端 X 和 Y 存储此信息。您通常会如何构建此信息?
哪个是处理这个问题的最佳方法?
最佳答案
我会创建 2 个桶:新闻和产品。
然后我会在每个存储桶中使用客户端名称作为键前缀。
我可能还会在新闻键中包含日期以方便日期范围。
news/acme_2011-02-23_01
news/acme_2011-02-23_02
news/bigcorp_2011-02-21_01
并可选择在产品名称前加上类别名称
products/acme_blacksmithing_anvil
products/bigcorp_databases_oracle
然后在你的 map /减少你可以使用 key filtering :
// BigCorp News items
{
"inputs":{
"bucket":"news",
"key_filters":[["starts_with", "bigcorp"]]
}
// ... rest of mapreduce job
}
// Acme Blacksmithing items
{
"inputs":{
"bucket":"products",
"key_filters":[["starts_with", "acme_blacksmithing"]]
}
// ... rest of mapreduce job
}
// News for all clients from Feb 12th to 19th
{
"inputs":{
"bucket":"news",
"key_filters":[["tokenize", "_", 2],
["between", "2011-02-12", "2011-02-19"]]
}
// ... rest of mapreduce job
}
关于riak - 如何在 Riak 中构建数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5052154/