Python Django中基于文档字段的混合sql/nosql数据存储?

Python Django中基于文档字段的混合sql/nosql数据存储?,python,sql,django,django-models,nosql,Python,Sql,Django,Django Models,Nosql,我正在创建一个需要允许用户创建自定义字段的应用程序,我认为最好将其存储在基于文档(基本上是序列化字典)的模型字段中 我担心在SQL数据库中存储这些可能非常大的文档时会遇到性能问题,因此我认为与其将文档存储在SQL数据库中,不如将指向这些文档的指针存储在SQL数据库中。然后,文档本身将存储在一个单独的NoSQL数据库中 假设这种结构有意义,那么构建一个以这种方式存储自定义数据字段的字段的最佳方法是什么?最理想的情况是,这些自定义字段可以作为属性在对象上访问,并在名称后面附加一个“_c”表示为自定义

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

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

假设这种结构有意义,那么构建一个以这种方式存储自定义数据字段的字段的最佳方法是什么?最理想的情况是,这些自定义字段可以作为属性在对象上访问,并在名称后面附加一个“_c”表示为自定义字段。例如,创建日期将变为django模型对象上的创建日期。我认为客户经理最好解决这个问题:


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

据我所知,这项任务没有最好的方法,但我建议您考虑另外两种选择,它们各有利弊:

  • 将用户定义的数据存储在或中。这将节省您编写定制管理器和NoSQL的大量工作。如果您担心将其与固定结构数据一起存储,请将其存储在一个单独的模型中,例如,以一对一的关系存储在数据库中

  • 将用户数据存储在通用的
    (字段id、字段名称、内容类型)
    (对象id、字段id、字段值)
    字典中。它们可以按字段类型划分(即
    int
    string
    float
    等)。这种方法不会从零开始为您提供性能良好的数据模型,但是智能索引和索引可以使其值得注意。与其他方法相比,您的数据查询、模型结构实施将更加容易

  • <> >如果您考虑使用NoSQL或其他DB用于可变内容,请务必选择一个有利于数据高效查询的工具,参见和