用于博客数据的NoSql解决方案

时间:2012-06-19 05:35:18

标签: nosql

我打算写一个博客风格的应用程序,想知道我应该用什么来存储。

我打算使用NoSql解决方案,因为做数据库架构很无聊。而且我相信我可以使用json结构化数据完成大部分功能。

设计时需要考虑哪些因素?哪种NoSql技术更适合这个目的?

粗略地看mongo / couchdb会做什么,我希望得到一些基于经验的建议。

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

的MongoDB / CouchDB的

我想两者中较容易开始的是MongoDB。它有点像旧的关系数据库,因为你可以添加索引到列或调用像count这样的操作。在CouchDB中,据我所知,你宁愿使用Map-Reduce来实现所有这些功能。 CouchDB中的索引由所谓的views生成。

MongoDB也将数据库,表概念大致映射到NoSQL(数据的两级访问),而CouchDB只知道一个级别(数据库)。

mytable = Connection().mydatabase.mytable # MongoDB
mytable.save(document)

mydb = couchdb.Server()['mydatabase'] # CouchDB
mydb.save(doc)

所以我认为CouchDB在开始时可能有点难以理解,因为你必须通过某种类型选择文档(或使用多个dbs,但我认为另外一个属性type就是人们使用,请参阅此presentation by David Zuelke page 41

MongoDB通常使用您可以包含在编程语言中的API(如果存在库,但它们适用于大多数语言)。然后,这些调用以二进制格式发送到服务器。另一方面,CouchDB使用REST-API。

数据的结构

您可以浏览网络上的一些教程。他们经常解释有关博客的事情,因为博客是面向文档的数据的一个很好的例子。

让我们自己看一下:你的帖子会有一张桌子(或type,如果你使用CouchDB)。每个帖子都可以有文字,一些标签,日期,评论。关于文档dbs的一点是,您可以将所有内容存储在文档旁边并保存关系dbs所具有的所有关系。

这意味着,我们可能会像这样对我们的帖子进行建模:

{type: post,
 date: 2012-06-19 22:14:23,
 author: user1462192,
 text: Welcome to my blog,
 comments: [
    {author: Aufziehvogel,
     date: 2012-06-19 22:14:45,
     text: Hello!
    },
    {author: user1462192,
     date: 2012-06-19 22:14:45,
     text: Hello, too!
    }
 ],
 tags: [welcome, new, interesting]
}

这就是帖子的样子。

开发软件时,您始终需要做的事情。想一想,您将节省哪些数据。想想它是如何相关的。然后,对于面向文档的数据库,您还必须考虑如何访问它。

有时您可能会将数据保存为帖子本身的子元素,因为它太大了。可能你不仅有作者的名字,还有更多的信息,如年龄,注册日期,......

然后用户可能看起来像这样:

{name: Aufziehvogel,
 age: 21,
 registration: 2012-06-19,
 interests: [php, nosql, data-mining, foreign-languages]
}

您不希望将此数据附加到每篇博客帖子,因为其中一些可能会更改,因为它非常大。相反,你会(就像关系数据库一样)在后期数据中存储对用户的引用。然后你必须合并上面链接的演示文稿中给出的作者和博客文章(第40-42页)。这会将所需作者与博客文章合并。

您还可以做的是保存authorname和ID,以便能够显示名称并生成HTML链接,而无需从数据库中抓取“真正的”作者。

验证

Zuelke还表明,对于面向文档的dbs,应用程序的任务是检查数据是否格式正确。在MySQL中,许多任务可以由数据库执行(列,数据类型,长度,UNIQUE键),但是当使用面向文档的dbs时,你必须在应用程序中自己完成(除了我认为MongoDB具有像唯一键之类的东西) )。

这使得良好的代码结构也很重要,因此您不必担心太多地方的数据格式。

我想可能会说得更多,但我希望这是第一次开始。

答案 1 :(得分:0)

使用app42提供的NoSQL数据库。这是如何使用app42 NoSQL。 http://api.shephertz.com/apis/storage.php