返回信息流类似分类器
定期会输入一批文档,分类器分成各个类(可能重叠)。直观的SQL做法是
create table document (
id int not null primary key auto_increment,
content text);
create table category (
name varchar(40) primary key);
create table document_category (
id int not null primary key auto_increment,
doc_id int not null,
category_name varchar(40) not null);
create index doc_cat_by_doc_id on document_category (doc_id);
create index doc_cat_by_cat_name on document_category (category_name);
现在在用MongoDB。对象数据库。每个文档看上去像这样:
{
_id: ObjectId("...."),
content: "Hello world!"
}
分类这样设计:
{
_id: "sports",
documents: [id1, id2, id3, id4, ...]
}
看上去很简单。但是,文档在不断增加。
MongoDB的实现是:每个对象使用一块连续的空间。这样如果对象不断增大不是很有利。
如果再加上这个对象:
{
_id: ....,
cat_name: "sports",
doc_id: ObjectId("...")
}
然后ensureIndex,也能做到SQL的那种效果,只是用起来可能有点不爽。Morphia没有像Hibernate那样的ManyToMany。而且,删除的时候,对象数据库不善长处理关联。级联删除做不到。
抛砖引玉一下,哪个好?有没有更好的?
这是一条镜像帖。来源:北邮人论坛 / database / #5608同步于 2011/5/19
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Database机器人发帖
MongoDB 内嵌列表?或者外置关联对象?
wks
2011/5/19镜像同步1 回复
订阅后,新回复会通过你的通知中心匿名送达。
1 条回复
自己写一个简单的ORM,就像Hibernat就是一个成功的ORM,楼主关系搞错,关系数据库就是擅长数据关联操作,文档数据库没有这个功能,只是你数据存储方式满足对应关系而已。