我SQL在我以前的所有应用程序中都使用过并了解Parse.com数据库存储,我想知道NOSQL.
我试图寻找之间的差异SQL,并NOSQL为最近两天&I仍然不明白的关系中是如何工作的NOSQL。
我了解到这NOSQL是无模式的,并且没有像 SQL 这样的结构。让我用一个例子来简要说明我的问题。
例子 :
在用于学校管理的 SQL 应用程序中,我将创建一个students存储学生信息的表。对于标记,我将有一个marks表,其中有一列user_id引用students表。我subjects将再有一张桌子,可以容纳sub_id,sub_code和subject_name。
因此,如果我sub_code在subjects表中进行更改,这将简单地反映到使用 ON UPDATE DELETE CASCADE 使用 FOREIGN KEY 的其他表。
现在我的问题是,
由于
NOSQL不使用规范化,数据将如何存储?单个表(NOSQL 中的文档)是否应该包含students表、marks表和subjects表中的所有信息?如果我们将所有信息都转储到一张表中,效率会有多高?
如果我们要更改主题代码,那么我们需要更新所有文档,对吗?(在 SQL 中,我们只是更改一个表中的主题代码,因为其他表中引用此列主题代码的其他列将简单地更新而不是更新每个条目?)
在您的问题中,您使用“SQL”和“关系”来表示同一件事。以同样的方式,您可以将“NoSQL”视为“非关系”的意思,即没有主键/外键概念;没有强制或暗示的“正常化”;“表”或“列”这两个词没有真正的含义。对于键值存储,它所知道的只是您传递给它的大量字节集合 - “值” - 以及较小的字节集合 - “键” - 用于索引该大集合。这个大集合中的内容以及它如何映射到数据库中其他值中的字节完全取决于您的应用程序和其中代码的质量。
但是,其他 NoSQL DBMS 确实允许您定义“值”内的内容。它们保存数据的模式,就像关系数据库一样。卡桑德拉就是一个例子。
因此,这取决于您以及您如何实施您的应用程序。您可以设置键值存储来模拟具有代理 ID 的关系数据模型。这将需要大量读取并失去 NoSQL 解决方案的意义。您可以设置键值以在写入记录时存储所有非规范化值。这对于检索来说会很快,但对于更新来说会很慢。您必须选择最适合您的系统并相应地实施它。NoSQL 不是魔术。你还有很多设计和开发要做。
NoSQL 这个术语非常广泛。它更多地与营销有关,而不是与技术有关。与数学(例如支持关系数据库的集合论)关系不大。不同的 NoSQL 产品的工作方式不同。仅阅读 Parse.com,您不会了解所有“NoSQL”。
了解您的问题。了解您准备为实现性能或一致性目标而做出的妥协,并选择最符合您要求的产品。
| 归档时间: |
|
| 查看次数: |
9172 次 |
| 最近记录: |