一、MongoDB介绍
Redis
如果你对数据的读写要求极高,并且你的数据规模不大,也不需要长期存储,选redis;
MongoDB
适合那些表结构经常改变,字段类型可以随时修改。数据的逻辑结构没又没那么复杂不需要多表查询操作,数据量又比较大的应用场景。
如果你的数据规模较大,对数据的读性能要求很高,数据表的结构需要经常变,有时还需要做一些聚合查询;
mongodb中读效率比写高;
实时插入、更新、查询,适合存储文档化格式的数据;
ElasticSearch
如果你需要构造一个搜索引擎或者你想搞一个看着高大上的数据可视化平台,并且你的数据有一定的分析价值;
HBase
如果你需要存储海量数据,且后续规模增长很大;
hbase默认适合写多读少情况;
存储容量更大,适合分布式海量数据存储;
1、MongoDB介绍
文档存储一般用类似json的格式存储,存储的内容是文档型的。这样也就有机会对某些字段建立索引,实现关系数据库的某些功能。
是一个基于分布式文件存储的开源数据库系统。
MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。
NoSQLBooster for MongoDB数据管理工具去连接MongoDB。
下面例子主要是搭建单机MongoDB服务,版本是6.0.6版本(mongodb-windows-x86_64-6.0.6-signed.msi),先简单介绍单机服务如何使用!
2、MongoDB工具操作
利用工具连接本地mongoDB,然后创建一个用户
db.createUser({
user:“root”,
pwd:“root”,
roles:[{role:“dbOwner”,db:“wwy_test”}]
})
创建wwy_test库,再创建w_test1表
db.w_test1.insert({
"name":"wwy1","age":18});
db.w_test1.insert({
"name":"wwy1","age":18,"city":"南京"});
db.getCollection("w_test1").insertOne({
_id: "0001",name:"wwy1","age":18,"city":"南京"});
db.getCollection("w_test1").insert([{
_id: "0005",name:"wwy1","age":18,"city":"南京"},{
_id: "0002",name:"lisi1","age":18,"city":"北京"}]); //id重复会报错
db.getCollection("w_test1").insertMany([{
_id: "0003",name:"zhaoliu1","age":12,"city":"南京"},{
name:"lisi2","age":18,city:"上海"}]);
db.getCollection("w_test1").save({
_id: "0001",name:"wwy111","age":20,"city":"东京"}); //id重复就覆盖
db.w_test1.update({
"age":17},{
$set:{
"age": 15}}); //更新一条
db.w_test1.updateOne({
"name":"zhangsan"},{
$set:{
"name": "wangsi"}}); //更新一条
db.w_test1.updateMany({
"name":"wwy1"},{
$set:{
"name": "zhangsan"}}); //更新所有
db.w_test1.deleteOne({
name:"lisi2"});
db.w_test1.deleteMany({
name:"lisi2"});
db.w_test1.find();
db.w_test1.find().pretty();
db.w_test1.findOne();
db.w_test1.find({
name:"wwy1",age:18}); //类似sql: select * from w_test1 where name='wwy1' and age =18;
db.w_test1.find({
'$or':[{
age:18},{
name:"wwy1"}]}); //或者
db.w_test1.find({
"age" : {
$gt : 16}}); //大于 类似sql: select * from w_test1 where age >16;
db.w_test1.find({
"age" : {
$gt : 16,$lt:19}},{
name:1,age:1}); //类似sql: select name,age from w_test1 where age >16 and age<19;
db.w_test1.find(<