我已经看到NoSQL在SO上弹出了很多,我对你为什么要使用它有了深刻的理解(从这里,维基百科等).这可能是由于缺乏对具体内容的具体和统一定义(更多的是范式而不是具体实现),但我正在努力探讨如何设计一个可以使用它的系统或如何我会在我的系统中实现它.我真的陷入了关系数据库的思维模式,从表和连接的角度思考问题......
无论如何,是否有人知道将使用它的系统上的速成课程/教程(基于NoSQL的系统的"hello world")或者基于SQL的现有"Hello World"应用程序的教程并将其转换为NoSQL(不一定是代码,但只是一个高级别的解释).
最基本的形式NoSQL实际上只是一种使用某种键/值配对系统存储对象的方式.你已经假设我一直使用这个.例如.在javascript中,你可以创建一个名为foo的对象,然后foo['myobj'] = myobj;
在对象中存储东西.
所有NoSQL服务器真正做的是为您提供添加/删除/查询海量数组的方法,并且仍然允许持久性和容错.您可以在大约100行代码中在内存服务器中创建NoSQL.
所以让我们这样做......在CouchDB中你使用map/reduce ...所以让我们创建一个map函数做一些SQL代码:
SELECT * FROM users WHERE age > 10
在CouchDB中,您为服务器提供了一个JavaScript函数,该函数可以对数据库中的每个项目运行...
function (doc) { if (doc.objType == "users") { if (doc.age > 10) { emit(doc._id, null) } } }
这就是它的全部内容.....它在服务器端变得更加复杂,因为服务器必须处理崩溃和同一对象的多个修订,但这只是一个例子.
这是一个介绍MongoDB 的体面幻灯片.我认为一些重大差异是大多数系统依赖于Active Record或类似的数据库抽象.
此外,我在Couch DB上找到了一本精彩的免费orlys书,非常棒.