此文已由作者温正湖授权网易云社区发布。
欢迎访问网易云社区,了解更多网易技术产品运营经验。
这是一篇MongoDB官网上的一篇文章,分析了使用MongoDB存储商品分类信息相比其他数据库的优势,并讲述了如何将其保存到MongoDB中。原址点击:User case – Product Catalog。MongoDB中文社区有大神已将其翻译成中文。在此不重复造车,直接转载。欢迎一起探讨。
关系型数据库解决方案
上述问题使用传统的关系型数据库也可以解决,比如以下几种方案
针对不同商品,创建不同的表
比如音乐专辑、电影这2种商品,有一部分共同的属性,但也有很多自身特有的属性,可以创建2个不同的表,拥有不同的schema。
CREATE TABLE `product_audio_album` ( `sku` char(8) NOT NULL, ... `artist` varchar(255) DEFAULT NULL, `genre_0` varchar(255) DEFAULT NULL, `genre_1` varchar(255) DEFAULT NULL, ..., PRIMARY KEY(`sku`)) ... CREATE TABLE `product_film` ( `sku` char(8) NOT NULL, ... `title` varchar(255) DEFAULT NULL, `rating` char(8) DEFAULT NULL, ..., PRIMARY KEY(`sku`)) ...
这种做法的主要问题在于
针对每个新的商品分类,都需要创建新的表
应用程序开发者必须显式的将请求分发到对应的表上来查询,一次查询多种商品实现起来比较麻烦
所有商品存储到单张表
CREATE TABLE `product` ( `sku` char(8) NOT NULL, ... `artist` varchar(255