mongodb去中心
Ⅰ mongodb 设计原则 一般内嵌多少层
让我们回顾下这些方案
你可以采取内嵌,或者建立one端或者N端的引用,也可以三者兼而有之。
你可以在one端或者N端冗余多个字段
下面这些是你需要谨记的:
1、优先考虑内嵌,除非有什么迫不得已的原因。
2、需要单独访问一个对象,那这个对象就不适合被内嵌到其他对象中。
3、数组不应该无限制增长。如果many端有数百个文档对象就不要去内嵌他们可以采用引用ObjectID的方案;如果有数千个文档对象,那么就不要内嵌ObjectID的数组。该采取哪些方案取决于数组的大小。
4、不要害怕应用层级别的join:如果索引建的正确并且通过投影条件(第二章提及)限制返回的结果,那么应用层级别的join并不会比关系数据库中join开销大多少。
5、在进行反范式设计时请先确认读写比。一个几乎不更改只是读取的字段才适合冗余到其他对象中。
6、在mongodb中如何对你的数据建模,取决于你的应用程序如何去访问它们。数据的结构要去适应你的程序的读写场景。
Ⅱ 怎么从mongodb读取数据java
从Mongodb读取数据,这个和从RDS关系型数据库读取数据原理应该是一样的;
简单的可以通过Spring提供的MongoTemplate去实现这个功能;
举个例子,查找某一条记录:
publicTfindOne(Criteriacriteria,Sortsort,String[]fields){
DBObjectfd=fields2DBObject(fields);
Queryquery=newBasicQuery(newBasicDBObject(),fd);
query.addCriteria(criteria);
if(sort!=null)
query.with(sort);
returnthis.mongoTemplate.findOne(query,entityClass);
}
/**
*如果是隐藏则首个元素为'$exclude'字符串
*
*@paramfields
*@return
*/
(String[]fields){
DBObjectresult=newBasicDBObject();
if(fields!=null){
intvisible=fields[0].equalsIgnoreCase("$exclude")?0:1;
intstart=visible==0?1:0;
for(inti=start;i<fields.length;i++)
result.put(fields[i],visible);
}
returnresult;
}
Ⅲ mongodb删除数据库后怎么恢复
深圳极佳数据库恢复中心开发的,mongodb数据库恢复工具可以从磁盘恢复数据库文件集合记录。你可以网络下、
Ⅳ mongodb千万级写入怎么优化
可以,只要你做好去中心化(可以并行),支撑多少规模的用户都可以.说是不行的,一个是成本太高,收益太低,比如银行有钱可以上oracle存储什么的,网站除非有收入一般不成,一个是性能达不到,比如twitter做实时的通讯,如果你弄个异步的架构或者sql,等发到都不知道多久了,还有就是瓶颈,如果只用一台机器来响应,再牛的机器和程序都顶不住哇.算一下,千万用户访问频率一天50pv,那么1秒5787响应,峰值算10倍就是5万,用几十台机器应该够.
Ⅳ 如何在mongodb 启动参数中去掉autu
Mongodb的关闭:
前台运行:
如果没有使用--fork,直接可以前台退出终端关闭。通过这种方式,Mongodb将会自己做清理退出,把没有写好的数据写完成,并最终关闭数据文件。要注意的是这个过程会持续到所有操作都完成。
后台运行:
如果使用--fork在后台运行mongdb服务,那么就要通过向服务器发送shutdownServer()消息来关闭。
1、普通命令:
$ ./mongod
> use admin
> db.shutdownServer()
要注意的是,这个命令只允许在本地,或是一个经过认证的客户端。
2、如果这是一个主从式的复制集群,在1.9.1版本后将按下面的步骤来关闭
检查从Mongodb的数据更新时间
如果所有的从Mongodb和主的时间差都超过10,这个时候不会关闭mongodb(在这种情况下面,我们可以通过配置timeoutSecs的方式来让从Mongodb完成数据的更新)
如果其中有一个从Mongodb与主服务时间差在10秒内,那么主服务器将会关闭,并且等待从Mongodb更新完成并关闭。
3、如果没有up-to-date 从Mongodb且你想强制关闭服务,可以通过添加force:true;命令如下:
> db.adminCommand({shutdown : 1, force : true})
> //or
> db.shutdownServer({force : true})
4、指定特定超时时间的关闭服务器,命令同上,另外加上一个timeoutsec:参数
> db.adminCommand(shutdown : 1, force : true, timeoutsec : 5)
> //or
> db.shutdownServer({force : true, timeoutsec : 5})
Ⅵ mongodb开启用户认证后,是否能启动web页面
修改/etc/mongodb.conf,添加如下行:
httpinterface=true
mongodb.conf内容如下:
bash-4.2$ cat /etc/mongodb.conf
port=27017 #端口
dbpath= /data/mongodb #数据文件存放目录
logpath= /data/mongodb/logs/mongodb.log #日志文件存放目录
logappend=true #使用追加的方式写日志
fork=true #以守护程序的方式启用,即在后台运行
maxConns=500 #最大同时连接数
noauth=true #不启用验证
journal=true
storageEngine=wiredTiger
httpinterface=true #启动http界面,端口号为28017
手动用命令启动mongodb:
bash-4.2$ mongod --config /etc/mongodb.conf --rest
about to fork child process, waiting until server is ready for connections.
forked process: 4203
child process started successfully, parent exiting
..............................................................................
(注释: --rest代表turn on simple rest api)
Ⅶ 用Python 和 MongoDB 构建千万级用户的后台靠谱吗
可以, 只要你做好去中心化(可以并行), 支撑多少规模的用户都可以.
说是不行的,
一个是成本太高, 收益太低, 比如银行有钱可以上oracle存储什么的, 网站除非有收入一般不成,
一个是性能达不到, 比如twitter做实时的通讯, 如果你弄个异步的架构或者sql, 等发到都不知道多久了,
还有就是瓶颈, 如果只用一台机器来响应, 再牛的机器和程序都顶不住哇.
算一下, 千万用户访问频率一天50pv, 那么1秒 5787 响应, 峰值算10倍就是5万, 用几十台机器应该够.
Ⅷ 如何启动MongoDB的WEB界面
1:log一定要指定一个xxx.log文件(文件不存在也要这么写,会自动创建,写成这样是不可以的--logpath d:\mongodb\logs)
2:serviceName的N字母要大写
注意:这条命令要到MongoDB的bin目录下运行,刚开始的时候,我就直接在D:\下运行,结果服务的可执行目录为【"D:\mongod" --logpath "D:\MongoDB\logs\MongoDB.log" --logappend --dbpath "D:\MongoDB\data" --directoryperdb --service 】,肯定是不对的。
该命令行指定了日志文件:E:\APMServ5.2.6\MongoDb\logs\MongoDB.log,日志是以追加的方式输出的;
数据文件目录:E:\APMServ5.2.6\MongoDb\data,并且参数--directoryperdb说明每个DB都会新建一个目录;
Windows服务的名称:MongoDB;
以上的三个参数都是可以根据自己的情况而定的,呵呵。
最后是安装参数:--install,与之相对的是--remove
启动MongoDB:net start MongoDB
停止MongoDB:net stop MongoDB
删除MongoDB:sc delete MongoDB
或
运行→regedit→注册表编辑器→HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services 下面显示的就是所安装的服务项,删除相应的就好
mongod --logpath E:\APMServ5.2.6\MongoDb\logs\MongoDB.log --logappend --dbpath E:\APMServ5.2.6\MongoDb\data --directoryperdb --serviceName MongoDB --install
Ⅸ 千万别用MongoDB真的吗
为什么这么说?数据库应该是正确的,或是尽可能的正确,因为数据库的错误会比其它错误危害更大。不仅仅是因为其对运行,性能,开销,和其价值影响巨大,还因为其连带的东西。匆忙去去移植 TB 级的数据相比起去修改代码中的一个逻辑错误来说是一个很巨大的工作。而在系统出问题后需要恢复 TB 级的数据,你会被硬盘的速度所限制,你会有一种绝望的感觉。数据库是一个很复杂的系统,对于者来说就像一个黑盒一样。你需要对你所采用的数据库持绝对信任的态度,信任它会做正确的事,并会保持一致性和可用性。为什么 MongoDB 会流行?说句公道话,我们必需承认 MongoDB 是流行的,因为下面这些原因让其流行变得很合理:它非常容易地运行非常的 Sche 模型,而且可以很容易地和 JSON 类的数据结果映射起来,这对于程序员来于有很大的感染力(它完全符合程序员的逻辑思维),而且,程序员总是在项目可以做技术选型的人。成熟和健壮,track record,被真实的 Use Case 测试过,等等。对于那些喜欢选择成熟的技术的系统和运营专业来说,这是一个很典型的选择。它单系统,低并发读的性能测试非常令人惊讶,而对于那些没有经验的评估者来说,这基本上来说是最重要的。现在,你可能正在一个随便玩一玩的,或是一个原型,或是那种只考虑速度不考虑别的的项目。老实说,对于这种项目,无所谓你用什么样的技术,只要搞定工作就行了。但是,如果你想要在 MongoDB 上搞一个大规模的系统,在上面运行真实的业务,那么,请不要用 MongoDB。转载,仅供参考。
