0

我正在创建一个需要允许用户创建自定义字段的应用程序,我认为最好将其存储在基于文档(基本上是序列化字典)的模型字段中。

我担心在 SQL 数据库中存储这些可能非常大的文档时会遇到性能问题,因此我认为不是将文档存储在 SQL 数据库中,而是将指向文档的指针存储在 SQL 数据库中。然后,文档本身将存储在一个单独的 NoSQL 数据库中。

假设这种结构是有意义的,那么构建以这种方式存储自定义数据字段的字段的最佳方法是什么?最理想的情况是,这些自定义字段可以作为属性在对象上访问,并表示为自定义,并在名称后附加“_c”。例如 created_date 将成为 django 模型对象上的 created_date_c 。我认为自定义管理器最好解决这个问题:https ://docs.djangoproject.com/en/dev/topics/db/managers/

编辑:我的 SQL 数据库是 MySQL。此外,文档作为列可能更有意义(例如在 Cassandra 中)。对此的思考会有所帮助。

4

1 回答 1

1

据我所知,没有最好的方法来完成这项任务,但我建议您研究另外两个选项,它们各有优缺点:

  • 将用户定义的数据存储在JSONfield或pickled field 中。这将为您节省大量编写自定义管理器和 NoSQL 的工作量。如果您担心将其与固定结构数据一起存储,请将其存储在具有一对一关系的单独模型中,例如单独的InnoDB 文件

  • 将您的用户数据存储在通用字典中(field_id, field_name, content_type)(object_id, field_id, field_value)它们可以按字段类型(即intstringfloat)进行拆分。这种方法不会从头开始为您提供性能良好的数据模型,但智能索引和分区可以使其值得注意。与其他方法相比,您的数据查询、模型结构实施会容易得多。

  • 如果您考虑将 NoSQL 或其他数据库用于您的可变内容,请务必选择一种对您的数据有效查询具有手段的数据库,请参阅此讨论wiki

于 2013-11-05T09:12:05.787 回答