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



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

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

设计这个时会考虑什么?哪种NoSql技术更适合这个目的?

粗略地看 mongo/couchdb 就可以了,我希望得到一些基于经验的建议。

感谢您的帮助!

MongoDB/CouchDB

我想两者中更容易开始的是MongoDB。它更像是老式的关系数据库,因为您可以向列添加索引或调用计数等操作。据我所知,在CouchDB中,您宁愿使用Map-Reduce来实现所有这些函数。索引由所谓的视图在 CouchDB 中生成。

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

mytable = Connection().mydatabase.mytable # MongoDB
mytable.save(document)
mydb = couchdb.Server()['mydatabase'] # CouchDB
mydb.save(doc)

所以我想 CouchDB 在开始时可能有点难以理解,因为您必须按某种类型选择文档(或使用多个 dbs,但我认为type的另一个属性是人们使用的,请参阅David Zuelke 第 41 页的演示文稿。

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

数据的结构

你可以在网上寻找一些教程。他们真的经常解释一些关于博客的事情,因为博客是面向文档的数据的一个很好的例子。

让我们在这里稍微看看自己:你将有一个表格(如果你使用CouchDB,则type)来展示你的帖子。每个帖子都可以有一个文本,一些标签,一个日期,评论。关于文档 dbs 的要点是,您可以将所有内容存储在文档之外,并保存关系 db 具有的所有这些关系。

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

{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 页)。这会将所需的作者与博客文章合并。

您还可以做的是将作者姓名和ID保存在那里,以便能够显示姓名并生成HTML链接,而无需从数据库中获取"真正的"作者。

验证

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

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

我想还可以说更多,但我希望这是第一个开始。

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

最新更新