首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mongoDB和MySQL中的产品/类别管理

问mongoDB和MySQL中的产品/类别管理
EN

Stack Overflow用户
提问于 2013-11-20 16:17:54
回答 2查看 2.4K关注 0票数 1

我是mongoDB的新手。我编写了一个简单的应用程序来管理产品。我使用mongoDB。这是我的数据库

Category集合:

代码语言:javascript
复制
db.category.insert({id:1,name:"Motor",description:"Sell Motor"})
db.category.insert({id:2,name:"Car":description:"Sell Car"})

Product集合:

代码语言:javascript
复制
db.product.insert({id:1,name:"Honda CBR",price:15000,id_category:1})
db.product.insert({id:2,name:"Kawasaki ",price:16000,id_category:1})
db.product.insert({id:3,name:"Ford", price:50000,id_category:2})

我认为要找到Category名称为Motor的Product,我必须编写树查询:

代码语言:javascript
复制
var result =  db.category.find({name:"Motor"})
var cat = result.next().id
db.product.find({id_category:cat})

在MySQL中,我可以对两个表做同样的事情:

代码语言:javascript
复制
CREATE TABLE `product_manage`.`category`(  
`id` INT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(2000),
`description` VARCHAR(2000),
PRIMARY KEY (`id`)
);

CREATE TABLE `product_manage`.`product`(  
`id` INT NOT NULL,
`name` VARCHAR(2000),
`price` INT,
`id_category` INT,
PRIMARY KEY (`id`)
);

所以我不知道在这个例子中MongoDB相对于MySQL的优势是什么。我想再问一些:

在mysql中:

案例a:

代码语言:javascript
复制
select id into @id_cat where name="Motor"
select * from product where id_category = @id_cat

案例b:

代码语言:javascript
复制
select p.id,p.name,p.price from product p,category where p.id_category = category.id
and category.name = "Motor"

哪种情况对性能有好处?

EN

回答 2

Stack Overflow用户

发布于 2013-11-20 17:36:57

mongodb的优势将基于您的需求进行描述。在您的示例中,为了显示带有类别名称的产品,您必须在两个表之间进行连接,这将对性能产生一些影响。对于mongodb,您可以有一个名为Product的文档,您将在其中嵌入Category。像这样的东西

代码语言:javascript
复制
   {Id : 1 , "Name" : "hello mongodb" , Category : { "Id" : 1 , "Name" : "DB }}

现在,只需一个查询,您就可以获得Product及其类别。甚至你也可以搜索子文档,比如

代码语言:javascript
复制
          db.Collection.find({ Category.Id : 1 })

您将通过一个查询获得所有产品。如果您在类别中有更多详细信息,请保留产品集合中的一些详细信息,这些细节也是您经常与产品一起显示的,同时我们还将拥有包含详细信息的类别集合。

你可以自己弄清楚,即使类别名称和id等数据在产品的所有文档中都是重复的,这种模式设计在mongodb中的性能会更好。

票数 1
EN

Stack Overflow用户

发布于 2013-11-20 17:12:04

MongoDB是一个Document DB,文档可以是任何有效的json。这就是MongoDB的优势。

但是,MySQL是Relational DB。关系表示表(有固定的模式)

在您的例子中,MongoDB与MySQL相比没有优势,因为类别和产品是固定的。

This slide可以帮助您。

有很多争论“应该使用”v.s.“而不是”MongoDB“。如果你正在考虑改编MongoDB,那么需要深入研究一下mongodb。

已更新

哪种情况对性能有好处?

这取决于您的数据大小和分片策略。很抱歉,您的问题没有确切的答案。您需要构建自己的测试床并进行性能测试!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20090643

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档