0

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

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

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

我还读到您可以使用 Json 在 nosql db 中插入。

那么以下插入是否可能,我可以使用单个 json 添加目录和其中的文件

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

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

4

1 回答 1

1

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

在关系世界中,我们希望规范化我们的数据。目标是让数据只存在于一个地方。这迫使我们制作相当多的表格来表示数据。

在 NoSQL 世界(或至少其中的某些部分)中,关键词是非规范化。这意味着现在可以在数据库的不同部分拥有相同的数据。例如,我们可能将用户名存储在 10 个不同的结构中。如果您想更改用户名,您必须去 10 个地方并更改它(可能)。

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

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

关于如何使用 NoSQL 对数据进行非规范化的一些快速建议……如果您嵌入的对象变化很大,请仅存储对它们的引用并将对象分开。否则,您最终会将它们全部嵌入,并且几乎不可能进行实时更新。

于 2013-04-01T18:09:56.163 回答