2 zhangsh029 zhangsh029 于 2015.06.08 15:32 提问

多用户系统的数据库(MongoDB)设计

各位大神好,现在公司需要做这么一个平台,这个平台是提供给个人开发者的,个人开发者可以注册登陆到这个平台,登陆后,可以自己创建集合,通过我们提供的公有rest API,对自己创建的集合 进行增删改查。创建自定义集合的数量不受限。
我们现在的思路是:创建2个集合,一个集合保存用户自定义集合的名称,字段,以及字段类型等等信息,另一个集合存储自定义集合的数据。这种思路的问题是,单集合数据量过大,如果有成千上万的开发者,每个开发者都创建多个自定义集合,这个数据量太多了。
另一种思路是:用户的每个自定义集合,都单独创建一个集合。这种思路的问题是,成千上万的开发者,如果每个开发者都创建多个集合,这样,数据库里面的 集合数目又太多了。gg
有没有人有这方面的设计经验? 提前谢谢各位大神。

2个回答

caozhy
caozhy   Ds   Rxr 2015.06.08 15:40
已采纳

你这个不叫多用户,叫多租户,自己google,Multi-tenant MongoDB,有很多解决方案

zhangsh029
zhangsh029 谢谢您,其实我们就是想做一个 SaaS的平台,您的回答一下子解决我的问题,我已经在google上搜到解决方案了,再次非常感谢您。
大约 3 年之前 回复
zhangsh029
zhangsh029 非常感谢您的回答,我看看
大约 3 年之前 回复
sxjiangdongqin
sxjiangdongqin   2015.06.09 22:08

这样写不知道你能不能明白。。。如果你会基本的查询应该想想就明白了。。。
users (hash)
userid:1
roleA : 1 (set)
add , edit , del

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
[技术讨论]多用户(多公司)的数据库设计讨论
多用户(多公司)的数据库设计讨论。直接在原来的系统上,现在要变成多公司用的,只用在几张表上加上公司字段就OK了。
MongoDB数据库设计法则
By William Zola, Lead Technical Support Engineer at MongoDB “我有丰富的sql使用经验,但是我是个MongoDB的初学者。我应该如何在MongoDB中针对一对多关系进行建模?”这是我被问及最多的问题之一。 我没法简单的给出答案,因为这有很多方案去实现。接下来我会教导你如何针对一对多进行建模。 这个话题有很多内容需要讨论,
mongodb关联数据的设计
之前接触的都是MySQL这种关系型数据库的设计,很多数据库方面的思维已经被结构化查询语言束缚了。 最近在写一个类似论坛的一个小项目,前端用的是React,后端用node.js和mongodb。在写获取发帖列表接口的时候,需求是获取一个帖子数组,每个数组成员就是一个帖子对象,帖子对象里包括文章标题、文章内容,同时还有发帖的作者。而作者我原本存的是一个id,取自user集合。原本的思路是在查询的时候再
mongodb数据库设计实践
我们公司要开发一款企业博客软件,采用mongodb这种存储海量数据的数据库。简单介绍一下软件的需求,方便后面讨论数据库设计,用户登录后,只能浏览别人发送的微博,只有他加入企业后,才可以代表企业发微博,同时被企业认证过的人或是企业员工可以在系统内转发微博。 数据库设计的时候,只有三个角色,就是人,公司,新闻,因此一开始设计的时候,就只有user,com,news三个表,加上日志表,新闻举报表等附属
MongoDB 数据模型设计
一个高效的数据模型能够很好的满足你应用程序的需求。设计一个文档数据结构最关键的考量就是决定是否使用嵌入式还是引用。 1. 内嵌式数据模型 在MongoDB里面,你可以把相关的数据包括在一个单个的结构或者文档下面。这样的数据模式也叫做 “非规范化” 模式,它充分利用了MongoDB的灵活文档格式的功能。以下图为例: 内嵌数据可以让应用程序把相关的数据保存在同一条数据库记录里面。这样一来,应用程
mongodb内嵌设计
数据库性能对软件整体性能的影响是不言而喻的,那么,当我们使用MongoDB时改如何提高数据库性能呢?   1.范式化与反范式化   在项目设计阶段,明确集合的用途是对性能调优非常重要的一步。   从性能优化的角度来看,集合的设计我们需要考虑的是集合中数据的常用操作,例如我们需要设计一个日志(log)集合,日志的查看频率不高,但写入频率却很高,那么我们就可以得到这个集合中常用的操作
mongodb 3.2 实战(一)非关系型数据库设计,如何进行mongo的数据库设计?
mongo 于2015,12,8 正式发布了3.2的稳定版,这次重大的更新后,主要包括以下几个比较令人兴奋的点。1.wiredtiger 引擎在3.0发布时,wiredtiger作为数据引擎之一。3.2之后wiredtiger作为创建数据库的默认数据库,官方的文档中介绍wiredtiger引擎将提高7-10倍的的写效率。意味着更少的硬件支出也能够支持很大的并发操作和密集型操作。 附:所
MongoDB数据模型设计学习
MongoDB
mongodb数据库设计原则
1.一对很少  one-to-few  可以采用内嵌文档  person集合中 { name:'张三', age:20, address:[ {country:"中国",province:"山西省",city:"长治市"}, {country:"中国",province:"山西省",city:"太原市"} ] }     优点:不需要单独
thinkphp多用户系统,thinkphp案例
thinkphp多用户系统,thinkphp案例,含支付宝、微信支付,含定时功能,多用户商城系统