我正在经历建立电子商务网站的过程。我正在使用Django和Postgresql进行产品存储。
我已经提出了产品多变量问题。特别适用于不同类型的产品,不同类型的产品可以有不同的选择。而变化是由多种选择组合而成的产品。
我已经完成了分析,最后想出了两个可以解决它的解决方案。
第一个是创建彼此相关的多个表:
产品
变奏|属于到:产品
选项|属于到:产品
Option_Values |属于到:选项
Variation_Option_Values |属于到:变化|属于:选项} |属于:Option_Values
现在,最近我偶然发现了PostStresql的HStore(),它允许将数据存储为Key:Value到表的字段中。我可以将选项及其值存储在同一个表中。
它会减少表的数量并使其更容易实现。
关于哪种方法在查询速度和效率方面会更好的想法。还有任何设计建议?
答案 0 :(得分:1)
查询Hstore比查询传统的关系方案要慢,但与其他NoSQL数据库相当。
如果您想经常更新Hstore,则会出现问题。它消耗了大量的内存,导致整个字典被卸载 - 更改 - 并保存回数据库(postgres家伙正在改进这一点)。如果数据很大并且需要频繁更改,那么使用Hstore将毫无意义。虽然只是搜索它不会成为一个性能问题。但是,如果您可以传统地存储它,那么请选择它。
如果您发现Hstore对您的案例仍然有用,请查看django-hstore。它可以帮助您以NoSQL方式存储数据(通过SCHEME功能)。