NoSql速成班/教程[关闭]


100

我已经看到NoSQL在SO上弹出了很多,并且我对为什么要使用它有深刻的理解(从这里开始,在Wikipedia等)。这可能是由于缺乏对它的具体定义和统一定义(更多的是范式,而不是具体的实现),但我一直在努力思考如何设计使用该系统的系统或方法。我会在我的系统中实现它。我真的陷入了关系数据库思维定式中,以表和联接的方式思考事物...

无论如何,没有人知道会使用它的系统上的速成课程/教程(对于基于NoSQL的系统来说是“ Hello World”类)​​或采用基于SQL的现有“ Hello World”应用程序的教程并将其转换为NoSQL(不一定是代码,而只是一个高级解释)。


我真的很喜欢这部影片。是10Gen的网络研讨会。它说明了如何使用MongoDB发布基本内容以及添加社交互动(标签,评论,数据聚合)。
Onema 2012年

Answers:



53

在最基本的形式上,NoSQL实际上只是一种使用某种键/值配对系统存储对象的方式。我假设您一直都在使用此功能。例如。在javascript中,您可以创建一个名为foo的对象,然后foo['myobj'] = myobj;将东西存储在该对象中。

NoSQL服务器真正做的就是为您提供一种添加/删除/查询海量数组的方法,并且仍然允许持久性和容错能力。您可以用大约100行代码在内存服务器中创建NoSQL。

因此,让我们以这种方式进行操作...在CouchDB中,您使用map / reduce ...因此,让我们创建一个映射函数,使其与一些SQL代码相同:

SELECT * FROM users WHERE age > 10

在CouchDB中,您为服务器提供了一个JavaScript函数,该函数可以针对数据库中的每个项目运行...

function (doc)
{
    if (doc.objType == "users") {
       if (doc.age > 10) {
           emit(doc._id, null)
       }
    }
}

这就是它的全部。....由于服务器必须处理崩溃以及同一对象的多个修订,因此在服务器端从那里变得更加复杂。但这仅是示例。


10
您的示例似乎在大型数据库中效率低下。服务器可以在doc类型上建立索引还是可以聪明地使用它所使用的密钥并在密钥上进行索引?像钥匙可能是用户1,用户2,等等
杰斯



1

y_serial是作为一个单独的Python模块编写的,其读起来像是一个工作教程,并且包含许多技巧和参考:http: //yserial.sourceforge.net/

这从如何以“ NoSQL”(不仅是SQL)方式持久化任意Python对象(例如,字典数据结构)的角度出发。





By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.