持久化用户首选项 - 关系或面向文档的数据库

时间:2013-12-12 20:20:40

标签: database database-design relational-database document-oriented-db

我正在考虑在应用程序的会话到期之后持久保存用户首选项,并且如果基于人们以前的经验,关系数据库(即Oracle,MySql)或面向文档的数据库(即MongoDB,Redis)更适合此任务。为了帮助澄清用户首选项的含义,我的Web应用程序将基于每个用户存储非常详细的信息,包括但不限于:窗口大小和位置,网格列宽度和顺序,各种小部件状态(折叠/未 - 倒塌的面板)。我的应用程序中的所有持久性目前都由关系数据库处理,但我感觉像用户首选项这样的东西可能更适合面向文档的数据库,因为可能很难以严格结构的方式表示这些数据半结构化的方法可能会更好。

2 个答案:

答案 0 :(得分:0)

如果您已经在为应用程序使用关系数据库,那么将用户权限分离到面向文档的数据库是没有意义的 - 这只会增加复杂性。开始一个新的应用程序,值得考虑。

对于现有应用程序,您可以考虑使用半结构化数据存储,例如Postgresql的hstore

答案 1 :(得分:0)

提出的问题是安装新数据库的适用性和实用性。

什么是DB更适合用户偏好等非关系数据?

显然答案应该是非关系数据库。面向文档的NoSQL数据库适合存储这些数据库。

OP提到了Widgets等首选项,这些首选项最有可能是JSON文档/对象。这是mongoDB或面向JSON文档的DB更合适的另一个原因。

还担心安装新数据库"这是来自旧的关系数据库的经验/痛苦,这些数据库都没有。但这一切除了适应性"题。许多因素将进入"实用性"除了依赖之外的决定。