NoSQL中的唯一值

时间:2016-02-27 05:25:34

标签: mongodb couchbase database nosql

考虑mongodbcouchbase。如果我需要某个值在UINT32

范围内是唯一的(可能是增量的),该怎么办?

好吧,我想我可以添加another_id之类的字段,并使用类似this的字母来增加它(mongo)。

function getNextSequence(name) {
   var ret = db.counters.findAndModify(
          {
            query: { _id: name },
            update: { $inc: { seq: 1 } },
            new: true
          }
   );

   return ret.seq;
}


db.users.insert(
   {
     another_id : getNextSequence("userid"),
     name       : "Stack O. Flow"
   }
)

但问题确实是,

  • 这种方法安全吗?
  • 我是否应该使用NoSQL? (考虑到我只有大约50M行数据,但我确实需要快速读写,因为这50M行数据几秒钟就会更新几次。)
  • 如果我坚持SQL我应该使用哪一个。我使用过的MySQL太慢了。 (虽然非优化可能有问题)(加入很多表)

感谢您提出任何建议。

1 个答案:

答案 0 :(得分:0)

Couchbase中有一个特定的计数器对象可以做你想要的。这是一个example of it with Node.js

您可以通过执行objectID将其与您正在使用的主对象相关联,例如:

original_objectID ::计数器。

然后当你去获取原始对象时,你只需通过ID对另一个计数器对象进行获取并完成。您也可以轻松地迭代它。因此,如果您需要获取对象并且原始objectID是

用户::柯克

然后该用户的计数器对象将是:

用户::柯克::计数器

您可以通过该ID获取并设置它。它在Couchbase中运行良好。