当前位置:  开发笔记 > 后端 > 正文

如何使用关系数据库作为基于文档的数据库?

如何解决《如何使用关系数据库作为基于文档的数据库?》经验,为你挑选了1个好方法。

为了制作一个文档管理系统,我正在查看像MongoDB这样的文档存储,但是由于我对常规数据库(Firebird,Sql Server,Mysql)有更多的经验,我想知道是否有可能将文档存储在关系数据库之上.

关于文档存储的优点,架构较少:

适合存储有关文件的任意元数据的任务

无需升级架构

根据mongodb,BLOB的优秀表现就像视频一样

更易于扩展

但是有一个关系:

参考完整性

更好的工具

更安静的崩溃和腐败

SQL

那么,在这种情况下如何处理关系数据库呢?



1> Bill Karwin..:

考虑Martin Fowler的序列化LOB模式:

CREATE TABLE Documents (
  documentid SERIAL PRIMARY KEY,
  -- fixed relational attributes ...
  document TEXT -- contains XML, YAML, whatever
);

您可以将任何带有动态属性的半结构化数据放入document列中.您无法轻松使用SQL谓词来搜索或按该blob中的字段排序.但是你无论如何都不可能 - 变量属性是一个非关系概念,无论如何在SQL中支持它们都很尴尬.

您可以使用混合方法,在常规列中存储一些固定属性,以及在blob中存储所有变量属性.

这指出了为什么存在面向文档的数据库.它们旨在解决关系范式选择不支持的问题.但面向文档的数据库并没有做一些关系数据库所做的很酷的事情,比如参照完整性甚至数据类型的一致性.

推荐阅读
N个小灰流_701
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有