我正在尝试在NoSQL中创建一个用于学习目的的数据库
它是一个简单的通知管理(在通知borad中添加/编辑/删除通知)应用程序。
我有Memcached(实际上是Membase),我可以将数据存储为键值对。
为了添加通知,我正在生成一个唯一的ID {using uniqueid()function}并在其中存储通知详细信息。但问题是,
的 1。如何列出所有通知?
我还想在通知中添加序列号。为此,我需要知道最后插入数据的序列号。的 2。如何找到最后插入的通知?
如果发现这个问题不合适,那么这是一个有点关系的数据模型(或者你可能会说,它应该在关系数据库中实现),请让我知道任何用例场景,我可以使用NoSQL来了解它。< / p>
答案 0 :(得分:2)
实体之间的自然连接是关系型的 - 因此每个数据模型都是使用关系模式精心设计的。几乎每个nosql架构都可以在关系数据模型中表示。
使用NoSQL时,使用标准关系模型并不舒服(例如,当外部组件需要添加自己的数据并且您事先不知道它们)或者您需要更好的性能和扩展时 - 然后您将数据非规范化NoSQL架构。
MongoDB(http://www.mongodb.org/)是NoSQL数据的一个很好的起点,因为它允许您将非规范化模式与(几乎)关系设计混合使用。
不错的用例是为自定义表单数据存储实现数据模型 - 其中字段数和字段类型未提前知道
关于你的问题:
答案 1 :(得分:1)
要了解NoSQL的第一件事是,有很多NoSQL解决方案,具有不同的功能。你需要选择一个最合适的。在这种情况下,Redis将通过您选择的设计让您的生活更轻松。
问题的核心是CAP theorem。许多NoSQL解决方案故意选择不保证一致性。一旦你抛弃它,你不能保证相同的ID不会分发两次。因此,使用时间戳或使用其他东西(如Redis)来生成可以存储在任何地方的唯一ID是有意义的。