所以我正在设计这个博客引擎,我试图保留我的博客数据,而不考虑评论或会员系统或任何其他类型的多用户数据。
博客本身围绕着两种类型的数据,第一种是实际的博客文章条目,其中包括:标题,帖子正文,元数据(主要是日期和统计数据),所以它非常简单,可以用简单的json对象表示。第二类数据是博客管理配置和个人信息。评论系统和其他系统将使用 disqus 。
实施我主要担心的是这种引擎能够通过尖峰访问进行扩展(我知道你可能会争论这个,但我们认为这是理所当然的)。所以,自从我开始这个项目以来,除了数据层之外,我的堆栈其余部分都运行良好。现在我一直在选择数据库这个困境,我考虑过MongoDB,但是一些评论和文章/基准测试表明收集读取一定大小后的慢读取。接下来我看着Redis并使用它的持久性功能RDB和AOF,而Redis擅长快速阅读/写作我害怕使用它因为我不熟悉它。整个搜索继续进行 "PostgreSQL 9.4 is now faster than MongoDB for storing JSON documents" 等事情。
那么有什么办法可以解决这个问题吗?考虑到我只需要在键,值结构中表示我的数据,只需要快速读取但不需要写入和容错能力。
谢谢
答案 0 :(得分:1)
这只是一个非常简单的CMS的选项,但听起来就像你正在构建的那样。
如果您的博客非常简单,并且主要关注的是流量非常高,那么最好的选择可能是完全避免使用数据库并让CMS生成静态文件。通过这样做,您可以完全消除所有数据库问题。
如果你做任何动态或复杂的事情,这不是最好的选择,但在这个小用例中它可能符合要求。
答案 1 :(得分:1)
如果我是你,我会从小做起,而不是尝试优化大数据。你读到很多关于NoSQL解决方案缺点的博客都是关于大型数据集的 - 或者是那些试图与为非规范化数据设计的数据库做关系的人。
我要考虑的数据库列表:
蒙戈。它有巨大的社区支持,并基于最近的资金 - 它将会存在一段时间。它在单个实例和基本副本集上运行良好。这很容易设置和免费,因此值得花一两天时间运行自己的测试来一劳永逸地解决问题。不要相信博客。
Couchbase。支持键/值存储,并且还具有磁盘持久性。 http://www.couchbase.com/couchbase-server/features也有一些最近的资金,所以希望这意味着稳定。 =)
的CouchDB / PouchDB。您可以纯粹在客户端使用PouchDB,它可以连接到服务器端CouchDB。 CouchDB可能没有与Mongo或Couchbase相同的动力,但它是一个积极支持的产品,并且具有持久性到磁盘的键/值。
了Riak。 http://basho.com/riak/。另一个可扩展的NoSQL,是一个键/值存储。
您可以在几个小时内安装并运行所有上述产品的概念验证。我建议这样做有以下原因:
给定的数据库可能会扩展并点击您的积分,但使用时会感到不愉快。考虑选择一个感觉有趣的数据库!类似于通过Java选择Ruby / Python,因为语法更好。
您的用例和域名将相当独特。值得测试各种产品,看看哪种产品最合适。
每个数据库都有怪癖,在你真正尝试之前你不会找到它们。人们可能会有一些可以通过的怪癖,一个人会有一个怪癖,这是一个显示阻止。
尝试所有这些的好处是他们所有支持无模式数据,所以如果你写JSON,你可以使用所有这些!无需在代码中为每个数据库创建对象。
如果您在代码中正确抽象数据库,则交换数据存储不会那么痛苦。换句话说,如果您可以轻松更换数据存储,那么您的代码会更快乐。