数据结构没有SQL或SQL
NoSQL or SQL for Data Structure
我正在构建一个应用程序,这是我第一次使用数据库。我选择 MongoDB 是因为最初我认为我的数据结构适合它。经过更多研究,我对构建数据的所有可能方式有点迷茫,以及哪些方式最适合性能,哪些最适合我的数据库类型(目前 MongoDB,但可以更改为 PostgreSQL ).这是我所有的数据结构和迭代:
注意:我知道“Payrolls”集合在下面的示例中有些多余。它只是代表这个假设中的数据层次结构。
原始数据结构
这里的结构与NoSQL擅长的一致,在单个文档中快速获取所有内容。但是,我打算让我的员工对象保存大量数据,并且我不希望随着用户继续向这些员工添加员工和数据而侵犯文档大小限制,因此我将它们拆分为一个单独的集合并使用参考(对象)ID 将它们绑定在一起:
第二种数据结构
不久之后,我希望能够相互独立地操纵客户、地点、部门和员工,但仍保持它们之间的关系,我实现了数据结构的这一迭代:
第三个和当前数据结构
正是在这一点上,我开始意识到我已经偏离了 NoSQL 哲学。现在,不是针对数据库中的一个集合执行一个查询(第一次迭代),也不是对后续人口执行一个查询(第二次迭代),我现在在抓取数据时并行执行 4 个查询,尽管有所有数据相互关联。
我的问题
我的第一个数据结构是否适合继续MongoDB?如果是这样,如果 employees 字段变得太大,我该如何补偿文档大小限制?
我的第二种数据结构是否更适合继续MongoDB?如果是这样,我如何独立操作这些字段?我是否为每个字段创建文档 schemas/models 并按模型查询它们?
我的第三种数据结构是否仍然适合 MongoDB,或者我是否应该考虑迁移到具有这种分散结构级别的关系数据库?这种结构是否让我比其他人更自由 或 更容易访问来操纵我的数据?
你的问题有点宽泛,但我的回答是 MongoDB 应该能够轻松处理你当前的数据结构。 BSON Mongo 文档的最大文档大小为 16MB (q.v. the documentation)。这是相当多的文本,例如,员工不太可能需要 16MB 的存储空间。
如果您需要每个对象的单个事务占用 比 BSON 最大值 16MB 更多,您可以使用 GridFS。 GridFS 使用没有任何存储限制(除了最大数据库大小的限制)的特殊集合(files
和 chunks
)。使用 GridFS,您可以写入任何大小的对象,并且 MongoDB 将容纳这些操作。
我正在构建一个应用程序,这是我第一次使用数据库。我选择 MongoDB 是因为最初我认为我的数据结构适合它。经过更多研究,我对构建数据的所有可能方式有点迷茫,以及哪些方式最适合性能,哪些最适合我的数据库类型(目前 MongoDB,但可以更改为 PostgreSQL ).这是我所有的数据结构和迭代:
注意:我知道“Payrolls”集合在下面的示例中有些多余。它只是代表这个假设中的数据层次结构。
原始数据结构
这里的结构与NoSQL擅长的一致,在单个文档中快速获取所有内容。但是,我打算让我的员工对象保存大量数据,并且我不希望随着用户继续向这些员工添加员工和数据而侵犯文档大小限制,因此我将它们拆分为一个单独的集合并使用参考(对象)ID 将它们绑定在一起:
第二种数据结构
不久之后,我希望能够相互独立地操纵客户、地点、部门和员工,但仍保持它们之间的关系,我实现了数据结构的这一迭代:
第三个和当前数据结构
正是在这一点上,我开始意识到我已经偏离了 NoSQL 哲学。现在,不是针对数据库中的一个集合执行一个查询(第一次迭代),也不是对后续人口执行一个查询(第二次迭代),我现在在抓取数据时并行执行 4 个查询,尽管有所有数据相互关联。
我的问题
我的第一个数据结构是否适合继续MongoDB?如果是这样,如果 employees 字段变得太大,我该如何补偿文档大小限制?
我的第二种数据结构是否更适合继续MongoDB?如果是这样,我如何独立操作这些字段?我是否为每个字段创建文档 schemas/models 并按模型查询它们?
我的第三种数据结构是否仍然适合 MongoDB,或者我是否应该考虑迁移到具有这种分散结构级别的关系数据库?这种结构是否让我比其他人更自由 或 更容易访问来操纵我的数据?
你的问题有点宽泛,但我的回答是 MongoDB 应该能够轻松处理你当前的数据结构。 BSON Mongo 文档的最大文档大小为 16MB (q.v. the documentation)。这是相当多的文本,例如,员工不太可能需要 16MB 的存储空间。
如果您需要每个对象的单个事务占用 比 BSON 最大值 16MB 更多,您可以使用 GridFS。 GridFS 使用没有任何存储限制(除了最大数据库大小的限制)的特殊集合(files
和 chunks
)。使用 GridFS,您可以写入任何大小的对象,并且 MongoDB 将容纳这些操作。