我在一个项目中工作,我必须保存friends.After的列表,思考了很多,并在网上搜索最好的方式做它似乎保存用户id和朋友id在一个表中。但可以肯定的是,如果项目希望达到大规模,这种方法似乎不是很好。大多数大型公司,如谷歌,Facebook,Twitter也将他们的功能转移到nosql数据库上。那么,似乎我们不应该从这些NoSQL数据库开始我们的项目吗?
但与此同时,我读到了很多NoSQL的编码工作,因为这里没有提供关系数据库中的许多默认服务(如果我错了,请纠正我)
也许一种方法可以从关系型开始,因为它在小规模上具有非常好的功能,然后转移到NoSQL上,但要做到这一点,你必须编写非常好的可移植代码,在这些代码中,ORM可以发挥良好的作用吗?
想知道其他人的意见是什么才是正确的方法吗?
发布于 2011-05-01 05:59:49
编辑我看到其他人建议从SQL开始。我想改变我的主张,并说-试验小规模的项目,如“小型twitter克隆”或“用录像带存储”。将数据库保存在多个节点上,并编写脚本,这些脚本将向您提供大量数据。先使用Riak/Cassandra,然后使用一些SQL解决方案。你会发现你自己更容易更快。/edit
我会选择NoSQL (这就是我现在正在做的。以前我在大型项目中使用MySQL )。为什么?它的使用要简单得多,所以您可以将更多的注意力放在其他重要的事情上(NoSQL会处理大多数数据存储问题):
使用NoSQL也有缺点。
,
很棒的文章:http://labs.mudynamics.com/2010/04/01/why-nosql-is-bad-for-startups/
我的建议是从NoSQL开始并坚持下去。你应该看看像Riak和Cassandra这样的基于发电机的数据库。也可以尝试使用CouchDB (CoachBase)。这是针对大多数数据的。对于朋友关系来说,图形数据库是一个很好的选择。
发布于 2011-05-01 02:09:58
一般情况下,远离ORM,尤其是ActiveRecord。
他们通常创建一个“开发债务”,这意味着它使项目的开始看起来很容易。
当你投资于与ORM的完全集成,并且80%的项目已经完成时,
你开始看到ORM失败的所有边界情况。
除此之外,大多数ORM都会进行不太理想的查询,并且从不利用引擎特定的特性。
至于SQL vs noSQL:我建议从SQL数据库开始,然后当应用程序增长时,开始使用某种缓存策略(memcached,或者redis)。只有当解决方案耗尽时,才开始寻找数据库逻辑中不需要是关系型的部分。
noSQL数据库提供一系列非常具体的用例,并不适用于一般的应用程序。
发布于 2011-05-01 01:52:28
使用SQL数据库。
当您开始每天获得数百万用户时,开始使用某种类型的NoSQL数据库。
https://stackoverflow.com/questions/5843492
复制相似问题