有人可以向我解释一个关系数据库(例如MySQL)与Neo4j等图形数据库相比的优缺点吗?
在SQL中,您有多个表,其中各种ID链接它们.然后你必须加入连接表.从新手的角度来看,为什么要将数据库设计为需要连接,而不是将连接从一开始显示为边缘,就像使用图形数据库一样.从概念上讲,对新手来说没有任何意义.据推测,这有一个非常技术但非概念性的原因?
我知道像MySQL,PostgreSQL和MS SQL Server这样的解决方案是关系数据库系统,NoSQL,MongoDB等是非关系型DBMS.
但是,这两种系统有什么区别?
Layman条款是优选的.
谢谢.
所以,我一直在阅读我的数据库设计中的识别与非识别关系,并且关于SO的一些答案似乎与我相矛盾.以下是我要看的两个问题:
从每个问题的最佳答案看,我似乎对识别关系有两种不同的看法.
第一个问题的响应表明,标识关系"描述了子表中行的存在取决于父表中的行的情况." 给出的一个例子是,"作者可以写很多书(1对n的关系),但没有作者就不能存在书." 这对我来说很有意义.
然而,当我阅读对问题二的回答时,我感到困惑,因为它说,"如果一个孩子识别其父母,那就是一种识别关系." 然后答案继续给出一些例子,例如社会安全号码(识别一个人),但地址不是(因为许多人可以住在一个地址).对我来说,这听起来更像是主键和非主键之间的决定.
我自己的直觉(以及对其他网站的额外研究)指出了第一个问题,其反应是正确的.但是,在我继续前进之前,我想验证,因为我不想学习错误,因为我正在努力理解数据库设计.提前致谢.
database database-design relational-database identifying-relationship
对不起那个noob问题,但有没有真正需要与数据库中的表一对一的关系?您可以在一个表中实现所有必需的字段.即使数据变得非常大,您也可以在SELECT语句中枚举所需的列名而不是使用SELECT *.你什么时候真的需要这种分离?
我一直试图看看我是否可以用基于文档的数据库来完成一些要求,在本例中是CouchDB.两个通用要求:
我开始认为基于文档的数据库不是满足这些要求的最佳选择.此外,我无法想象使用基于文档的数据库(也许我的想象力太有限).
当我尝试使用面向文档的数据库来满足这些要求时,你能解释一下我是否向榆树询问梨子吗?
database couchdb relational-database nosql document-database
除了google/bigtable场景之外,什么时候不应该使用关系数据库?为什么不,你应该用什么?(你学到了'艰难的道路'吗?)
最近我一直在玩Node.js.在我的特殊情况下,我最终使用MongoDB,部分原因是因为它非常简单,部分原因是Mongoose似乎是一种非常简单的开始使用它的方法.
我注意到在使用Node.js时似乎对关系数据库有一定程度的反感.与Node.js生态系统中的非关系数据库相比,它们似乎得不到很好的支持,但我似乎无法找到一个简明的理由.
所以,我的问题是,是否存在一个可靠的技术原因,为什么关系数据库比使用MongoDB等替代方案更适合使用Node.js?
编辑:只是想澄清一些事情:
我正在寻找的只是技术上的原因.例如,如果有一个技术上的原因,为什么关系数据库在与Node.js一起使用时表现异常糟糕,那么这就是我正在寻找的那种东西(请注意,到目前为止,从答案来看似乎不是案子)
我有两张桌子/收藏品; 用户和组.用户可以是任意数量的组的成员,用户也可以是任意数量的组的所有者.在关系数据库中,我可能有第三个名为UserGroups的表,其中包含UserID列,GroupID列和IsOwner列.
我正在使用MongoDB,我确信在文档数据库中存在这种关系的不同方法.我应该将Users表中的groups和groups-as-owner列表作为两个ObjectID数组嵌入吗?我是否还应该将Groups表中的成员和所有者列表存储为两个数组,从而有效地镜像导致重复关系信息的关系?
或者,桥接UserGroups表是文档数据库中用于多对多关系的合法概念?
谢谢
有几种类型的数据库用于不同的目的,但通常MySQL用于一切,因为是最知名的数据库.仅举一个例子,在我的公司中,大数据的应用程序在初始阶段有一个MySQL数据库,这是令人难以置信的,并将给公司带来严重后果.为何选择MySQL?仅仅因为没有人知道应该如何(以及何时)使用另一个DBMS.
所以,我的问题不是供应商,而是数据库的类型.您是否可以为每种类型的数据库提供特定情况(或应用程序)的实际示例,强烈建议您使用它?
例:
•由于Y,社交网络应使用类型X.
•MongoDB或沙发数据库不支持交易,因此文档数据库对银行或拍卖网站的应用程序不利.
等等...
关系: MySQL,PostgreSQL,SQLite,Firebird,MariaDB,Oracle DB,SQL服务器,IBM DB2,IBM Informix,Teradata
对象: ZODB,DB4O,Eloquera,Versant, Objectivity DB,VelocityDB
图形数据库: AllegroGraph,Neo4j,OrientDB,InfiniteGraph,graphbase,sparkledb,flockdb,BrightstarDB
主要价值商店: Amazon DynamoDB,Redis,Riak,Voldemort,FoundationDB,leveldb,BangDB,KAI,hamsterdb,Tarantool, …
使用数据库,如何使用关系代数找到MAX?