哪个数据库适合我的应用程序mysql或mongodb?使用Node.js,Backbone,Now.js
我想使用以下方式制作docs.google之类的应用程序(没有其api,完全在我自己的服务器上)前端:骨干后端:节点
您认为哪个数据库更好? MySQL或MongoDB的?应该支持良好的可伸缩性。我熟悉php上的mysql,如果答案是mysql,我会很高兴。但是我看到了很多教程,他们使用mongodb,为什么他们在没有mysql的情况下使用mongodb?我应该使用什么?
任何人都可以给我链接一些使用骨干,Node,mysql(或mongo)构建的示例应用程序(带有源代码)。或至少一个应用。与节点和MySQL
感谢
回答如下:使用MongoDB,您只需store JSON对象并检索它们的完整格式,因此您实际上不需要ORM层,并且花费了更少的CPU时间来回转换数据。 MongoDB背后的开发人员还使水平扩展数据库具有更高的优先级,并允许您运行任意Javascript代码在DB端预处理数据(允许对数据进行map-reduce样式过滤)。
但是您会因此而损失一些:您无法加入记录。实际上,您存储的JSON结构只能通过SQL中的联接来完成,但是在MongoDB中,数据只有一种结构,而在SQL中,您可以进行不同的查询并以其他方式更轻松地表示数据,因此,如果您需要对您的数据库进行大量分析,MongoDB会变得更加困难。
我认为MongoDB中的查询语言比SQL更“粗糙”,部分是因为它不那么熟悉,部分是因为查询功能随意地组合在一起,部分是为了使其成为有效的JSON,部分是因为存在从字面上看,有两种做同一件事的方式,有些是较旧的方式,没有其他方式有用或定期格式化。而且,SQL的简单基于行的设计增加了数组和子对象类型的复杂性,因此语法必须能够处理对包含您定义的值的[[some
,<< all 定义的值,包含only定义的值,并包含none定义的值。相同的区别适用于对象键及其值,这使查询语法更难掌握。 (虽然我可以看到需要用到小写字母,但是$where
查询参数是一个警笛之歌,它需要在数据的每个记录上运行并返回布尔值的javascript函数,因为您可以轻松定义哪些对象是否要返回,但必须在数据库中的[[every记录上运行,无法使用索引。)所以,这取决于您要执行的操作,但是由于您说它是针对Google Docs克隆的,因此您[[大概不在乎任何表示形式但是]文档表示形式本身以及您'可能仅根据文档ID,文档名称或所有者的ID /名称进行查询,在查询中没有什么太复杂的。然后,我说能够获取用户正在编辑的文档的JSON表示,然后将其放入数据库中并使其自动索引这些重要字段,这值得学习新的数据库。 >
我还很努力地选择使用MongoDB为并非针对其构建的任务而创建的炒作。所以我的2美分是:就像David所说的那样,在MongoDB中存储和检索文档可能是分层对象很容易。如果您要存储大于16Mb的文档,它将变得更加复杂-MongoDB的答案是GridFS。
哪个数据库适合我的应用程序mysql或mongodb?使用Node.js,Backbone,Now.js
我想使用以下方式制作docs.google之类的应用程序(没有其api,完全在我自己的服务器上)前端:骨干后端:节点
您认为哪个数据库更好? MySQL或MongoDB的?应该支持良好的可伸缩性。我熟悉php上的mysql,如果答案是mysql,我会很高兴。但是我看到了很多教程,他们使用mongodb,为什么他们在没有mysql的情况下使用mongodb?我应该使用什么?
任何人都可以给我链接一些使用骨干,Node,mysql(或mongo)构建的示例应用程序(带有源代码)。或至少一个应用。与节点和MySQL
感谢
回答如下:使用MongoDB,您只需store JSON对象并检索它们的完整格式,因此您实际上不需要ORM层,并且花费了更少的CPU时间来回转换数据。 MongoDB背后的开发人员还使水平扩展数据库具有更高的优先级,并允许您运行任意Javascript代码在DB端预处理数据(允许对数据进行map-reduce样式过滤)。
但是您会因此而损失一些:您无法加入记录。实际上,您存储的JSON结构只能通过SQL中的联接来完成,但是在MongoDB中,数据只有一种结构,而在SQL中,您可以进行不同的查询并以其他方式更轻松地表示数据,因此,如果您需要对您的数据库进行大量分析,MongoDB会变得更加困难。
我认为MongoDB中的查询语言比SQL更“粗糙”,部分是因为它不那么熟悉,部分是因为查询功能随意地组合在一起,部分是为了使其成为有效的JSON,部分是因为存在从字面上看,有两种做同一件事的方式,有些是较旧的方式,没有其他方式有用或定期格式化。而且,SQL的简单基于行的设计增加了数组和子对象类型的复杂性,因此语法必须能够处理对包含您定义的值的[[some
,<< all 定义的值,包含only定义的值,并包含none定义的值。相同的区别适用于对象键及其值,这使查询语法更难掌握。 (虽然我可以看到需要用到小写字母,但是$where
查询参数是一个警笛之歌,它需要在数据的每个记录上运行并返回布尔值的javascript函数,因为您可以轻松定义哪些对象是否要返回,但必须在数据库中的[[every记录上运行,无法使用索引。)所以,这取决于您要执行的操作,但是由于您说它是针对Google Docs克隆的,因此您[[大概不在乎任何表示形式但是]文档表示形式本身以及您'可能仅根据文档ID,文档名称或所有者的ID /名称进行查询,在查询中没有什么太复杂的。然后,我说能够获取用户正在编辑的文档的JSON表示,然后将其放入数据库中并使其自动索引这些重要字段,这值得学习新的数据库。 >
我还很努力地选择使用MongoDB为并非针对其构建的任务而创建的炒作。所以我的2美分是:就像David所说的那样,在MongoDB中存储和检索文档可能是分层对象很容易。如果您要存储大于16Mb的文档,它将变得更加复杂-MongoDB的答案是GridFS。