存储模板和面向对象与关系数据库

时间:2010-12-21 19:51:01

标签: python database-design relational-database object-oriented-database

我正在设计一些自定义博客软件,并且遇到了有关数据库设计的难题。该软件要求有多种内容类型,每种内容类型都需要不同的输入表单和表示模板。

我最初的本能是将这些内容类型创建为对象,然后将它们序列化并将它们作为JSON或YAML存储在数据库中,并将条目表单和模板作为附加到“contentTypes”表的简单字符串。然而,这似乎很麻烦。是否有处理此设计的最佳实践?这是一个我应该考虑对象数据库的用例吗?

如果我应该使用对象数据库,我应该考虑哪个?我目前正在使用Python,并且更喜欢功能强大的Python库,但如果需要可以转移到Java。

2 个答案:

答案 0 :(得分:2)

请不要在数据库中存储模板(可能由用户更改)。如果必须处理数据库转储的落纱,那么从暂存环境迁移到生产是没有明智的方法。出于这个原因,我们正在倾销一些软件。

除此之外,我只是将数据库中的源(用户可编辑部分)加上“预编译版本”直接存储在数据库中(以便更快地检索)或存储在某些缓存系统中。

我个人采用集合理论方法。

  • 存储预编译的每组内容类型,并在编辑时重新编译,以便在单独的位置(表,集合,目录等)快速提供服务
  • 将源存储在一个公共位置,以便轻松重建不同的内容类型(源格式实际上只是一种特殊的内容类型)
  • 将模板保存在系统(dev,staging,prod)之间的迁移使迁移变得容易的地方

答案 1 :(得分:0)

我是一个巨大的Oracle助推器,但我认为你应该认真考虑NoSQL。 Cassandra和其他NoSQL数据库已经考虑过你的难题并将其粉碎到地面。 CouchDB是另一个人,我相信他们的示例代码是如何存储博客。