NoSQL中的表关系

时间:2013-04-01 08:04:16

标签: nosql

我正试图从mysql转移到nosql。 目前我的数据库中有2个表。文件和目录。

我的文件表中的字段是{FileID,FileName,ParentDirID,FileAttributes} 我的目录表中的字段是{DirID,DirName,ParentDirID,FileAttributes}

如果我使用任何NoSQL DB(Mongo / Couch / AmazonSimpleDB),我必须维护两个类似的结构文件和目录,否则会有不同的东西。

另外我读过你可以使用Json在nosql db中插入。

以下插入是可能的,我可以在单个json上添加目录及其中的文件

{dirid:"101",
dirName:"C",
ParentID:"100",
Files:{
[FileID:"201",
FileName:"a.txt"],
[FileID:"202",
FileName:"b.txt"]
}
}

如果是,那么如何创建更新查询,

1 个答案:

答案 0 :(得分:1)

从关系(MySQL)到NoSQL需要一些快速背景。

在关系世界中,我们希望规范化我们的数据。目标是只在一个地方存在数据。这迫使我们制作了不少表来表示数据。

在NoSQL世界(或至少其中某些部分),关键词是非规范化。这意味着现在可以在数据库的不同部分使用相同的数据。例如,我们可能将用户名存储在10个不同的结构中。如果要更改用户名,则必须转到10个位置并进行更改(可能)。

由于上述原因,相当多的NoSQL解决方案不支持关系意义上的连接。您可以将所有内容存储在一起,而不是单独存储结构然后加入。

对于您的具体用例,您似乎已经偶然发现了这个想法。您有一个目录文档,然后将所有文件信息嵌入到该文档中。

关于如何使用NoSQL对数据进行非规范化的一些快速建议...如果你有很多嵌入式对象,只存储对它们的引用并分离对象。否则你最终会将它们全部嵌入,并且实时更新几乎不可能。