公共基础
一、NoSQL概述
1、NoSQL
NoSQL定义:
非关系型、分布式、开放源码和具有横向扩展能力的下一代数据库。NOSQL==“Not Only SQL”。
2 数据库的分类
1、TRDB数据库
传统关系型数据库:基于单机集中管理数据理念,传统关系型数据库建立在集中的数据库管理系统上
TRDB数据库特点:
使用强存储模式技术;采用SQL技术标准定义和操作数据库;采用强事务保证可用性以及安全;采用单机集中处理方式
2、NoSQL数据库
一般NoSQL技术从数据存储结构原理分为:
键值存储:
特点:通过唯一的键值对组织数据,适用于快速存取和简单数据模型。 代表产品:Redis,Cassandra,Riak,DynamoDB。 列族存储:
特点:数据被组织成列族,每个列族包含多个列,适用于大规模数据和高吞吐量。 代表产品: HBase,Cassandra。 文档存储:
特点:数据以文档的形式存储,文档可以是自包含的、具有层次结构的文档或键值对。 代表产品:MongoDB,Couchbase,RavenDB。 图形数据库(Graph Databases):
特点:以图的形式存储数据,适用于复杂的关系和图状结构查询。 代表产品:Neo4j,OrientDB,ArangoDB。
NoSQL数据库特点:
使用弱存储模式技术;无SQL技术标准定义和操作数据库;采用弱事务保证可用性;主要采用多机分布式处理方式。
基于大数据应用产生的新技术
3、NewSQL数据库
结合传统关系型数据库与Nosql数据库技术的优点,实现大数据环境下的数据存储和处理。
二、数据库存储架构分类
1、单机架构
优点:集中部署、便于运维
缺点: 单机只能纵向扩展,可扩展性差;存在单点故障,出现故障会停机
2、主备架构
数据库部署在两台服务器上,主机负责数据读写,备机利用数据同步进行数据同步,保证数据一致。
优点:有一定的低于故障的能力;提升了数据的容错性
缺点:资源浪费,无故障只使用主机;性能压力集中在主机;故障时需要人工干预
3、主从架构
通过读写分离模式分散服务压力,主机负责写操作,从机负责数据查询服务
优点:提升资源利用率,适合读多写少场景;在大并发的场景,可以使用负载均衡在多个从机之间;从机扩展灵活,扩容操作不影响业务
缺点:延迟问题,数据同步到从机数据库时存在延迟,存在暂时性的数据不一致;写操作的性能压力在主机;主机故障是需要主从切换,人工干预需要响应时间,自动切换复杂度高
4、多主架构
数据库服务器互为主从,同时对外提供完整的数据服务
优点:资源利用率高;降低单点故障的风险
缺点:双主机都接受写数据,要实现数据双向同步,双向复制会带来延迟问题,极端情况有可能数据丢失
5、分片架构
水平数据分片架构,把数据分散在多个节点上分片方案,每个片包括数据库一部分
优点:
数据分散在集群的各个节点上,所有节点可以独立性工作;提升数据库写性能,降低单库数据容量
三、MongDB
1、MongoDB概述
由c++编写的开源、高性能、无模式的基于分布式文件存储的文档型数据库
特点:
高性能、高可用性、高扩展性、丰富的查询支持、可替换已完场文档某个指定的数据字段
应用场景:
社交场景:使用mongodb存储用户信息
游戏场景:用户信息,装备积分
物流场景:订单信息,订单状态
视频直播场景:点赞互动信息
场景操作特点:数据量大;读写操作频繁;价值较低的数据,对事物性要求不高
2、MongoDB增删改查
集合命名规则:
不能是空字符串;不能含有$、 \0 ;不能以system开头;用“.”来组织子集合
集合操作:
创建集合 :
(1)指定创建
db.createCllection("name1")
db.createCllection("cn",{"capped":true,"size":1000})
(2)默认创建(向不存在的集合里插入文档)
db.names.insert({"name":"zs","age":20})
查看集合
(1)show table
(2)show collections
(3)db.getCollectionNames()
(4)db.collections.stats()
删除集合:dorp()
db.collections.drop()
文档操作
插入
1、insert()、 insert({},{},{})
db.name.insert({"name":"zhangsan"},{"age":20})
2、insertOne()
db.name.insertOne({"name":"wangwu"})
3、insertMany([{},{},{},{}])
4、v=({"name":"xia
NoSQL介绍
最新推荐文章于 2024-07-14 18:18:16 发布