9
回答
MongoDB有没有数据库表设计?
MongoDB小白一枚,都是MongoDB是JSON数据库,那MongoDB需不需要进行表结构设计?换句话说就是,为每张表设计一个JSON模板,然后相同或相似结构的JSON文件都算在这张表中?
举报
天台道人
发帖于4年前 9回/4K+阅
共有9个答案 最后回答: 4年前
数据结构设计并不单指数据库范式。但是如果说仅仅因为不是关系数据库,我就可以弄得比excel表还随意,那么最后倒霉的还是你自己。
恩,我刚安装成功2.6.8版本,发现一张表(Collection)对其中具体记录的具体字段居然没有任何约束,什么json都可以放在同一张表中,无论这个json数据和已有的其他json结构差异有多大。
--- 共有 3 条评论 ---
天台道人回复 @Feng_Yu : Collection 4年前 回复
Feng_Yu当然了,为了管理方便分类存放还是有必要的。某些filed丢在一个collection,其他分类的field又可以丢在另外一个collection,方便区分。为了查询方便,可以为某些field加上索引 4年前 回复
Feng_Yu都说了,这个不叫表。collection最多翻译成集合,既然叫集合了,那么就没有表这种结构限制的条条框框。理论上自然是什么数据都可以丢进去。这也是非关系性数据库的一大特点。就是可以当这一类乱七八糟的数据的存储方案。 4年前 回复
mongoengine  可以约束!
--- 共有 3 条评论 ---
天台道人thx,貌似可以理解成,是一个可以对json字段进行弹性约束的规则进行模板编写,和实例-模板校验的东东 4年前 回复
铂金胖子回复 @金木道长 : 有人写了一个简单的 https://github.com/reorx/simplemongo 你可以fork一个,自己改改! 4年前 回复
天台道人@铂金胖子 这个蛮好的,可以接近关系数据库而又不限死,如何可以约束下子节点的个数和数值值域就太好了 4年前 回复
没有. 不光MongoDB,几乎所有的NoSQL都不存在schema的概念. NoSQL就是为了高伸缩设计的, schema设计在应用层, 数据层仅仅用于存取数据.

对了,一个Collection里记录太多,是不是也会像关系数据库那样影响读写效率?是不是也要进行分表?比如类似结构的记录本该放在同一个Collection的,但是为了MongoDB的查询效率,需要把一个Collection按年份或者其他等方式分Collection(分表)

--- 共有 2 条评论 ---
天台道人thx 4年前 回复
Feng_Yu不需要。想想看json这种数据结构的初衷。不就是hash表么?可以说对于查询来说开销是极小的。而且mongodb支持索引,你可以对查询的关键field进行index,比如按照date这个field作为关键进行查询,可以对date插入index 4年前 回复
顶部