use*_*989 17 mysql mongodb node.js backbone.js
我想使用frontend:backbone backend:node创建像docs.google.com这样的应用程序(没有api,完全在我自己的服务器上)
您认为哪个数据库更好?mysql还是mongodb?应该支持良好的可扩展性.我熟悉php的mysql,如果答案是mysql,我会很高兴.但是我看到很多教程,他们使用mongodb,为什么他们使用没有mysql的mongodb?我该怎么用?
任何人都可以使用骨干,Node,mysql(或mongo)为我提供一些示例应用程序(使用源代码)构建的链接.或至少应用程序.用Node和mysql
谢谢
小智 39
使用MongoDB,您可以只存储 JSON对象并检索它们的完整形式,因此您实际上不需要ORM层,并且您可以花费更少的CPU时间来回传输数据.MongoDB背后的开发人员还使数据库的水平扩展具有更高的优先级,并允许您运行任意Javascript代码以预处理数据库端的数据(允许对数据进行map-reduce样式过滤).
但是你因为这些收获而失去了一些:你不能加入记录.实际上,您存储的JSON结构只能通过SQL中的连接来完成,但是在MongoDB中,您只有一个数据结构,而在SQL中,您可以以不同的方式查询并以更替代的方式表示您的数据,因此,如果您需要对您的数据库进行大量分析,MongoDB将使这更难.
在我看来,MongoDB中的查询语言比SQL更"粗糙",部分原因是因为它不太熟悉,部分原因是查询功能"随意"组合在一起,部分原因是为了使其成为有效的JSON,部分是因为字面意思是有两种方法可以做同样的事情,有些方法不像其他方式那样有用或经常格式化.而且,基于SQL的简单行设计增加了数组和子对象类型的复杂性,因此语法必须能够处理包含您定义的某些值的数组的查询,包含您定义的所有值,仅包含您定义的值,并且不包含您定义的任何值.相同的区别适用于对象键及其值,这使得查询语法更难理解.(虽然我可以看到对edge-case的需求,但是$where查询参数,它采用在数据的每个记录上运行的javascript函数并返回一个布尔值,是一首Siren歌曲,因为你可以轻松定义你想要的对象是否返回,但必须在数据库中的每条记录上运行,不能使用任何索引.)
所以,这取决于你想要做什么,但是既然你说它是用于Google Docs克隆,你可能不关心任何表示而是文档表示本身,你可能只会根据文档进行查询ID,文档名称或所有者的ID /名称,在查询中没有太复杂.
然后,我会说能够获取用户正在编辑的文档的JSON表示,并将其放入数据库并让它自动索引这些重要字段,值得学习新数据库的代价.
esp*_*esp 11
我也在努力应对这一选择,看看使用MongoDB创建的炒作是不是为它创建的任务.所以我的2美分是:
正如David所说,在MongoDB中存储和检索文档可能存在的分层对象更容易.如果你想存储大于16Mb的文件会变得更加复杂 - MongoDB的答案是GridFS.
使用MySQL组织文件夹,组中的文档,跟踪哪个用户拥有哪些文档以及他/她提供访问权限的文件肯定更容易 - 您可以通过连接等强大的SQL查询,内置EXPLAIN优化,触发器,函数,存储过程等.MongoDB远在其中.
那么是什么阻止你使用MySQL组织文档和MongoDB来存储由id标识的一个文档集合(或几个集合 - 每个文档类型一个)?在我看来,最好的选择是在一个应用程序中使用两个数据库并不是问题.
MySQL将存储用户,组,文件夹,权限 - 无论您喜欢什么 - 并且对于每个文档,它将存储对集合和文档ID的引用(MongoDB具有特殊格式--DBRefs).MongoDB将文档本身存储在集合中(如果它们都小于16MB),或者集合中文档的预览和元数据以及GridFS中的整个文档.
大卫提供了一个很好的答案 要添加一些东西.
对于类似Google Doc的功能,MongoDB提供的灵活性和非常丰富的数据结构感觉更适合.
你可以通过搜索mongoose,node和MongoDB找到一些很好的示例帖子.
这是一个也使用backbone.js并且看起来很好的http://mattkopala.com/blog/2012/02/12/getting-started-with-nodejs/
| 归档时间: |
|
| 查看次数: |
21452 次 |
| 最近记录: |