NoSQL
1.为什么用NOSQL?
-
Memcached(缓存)+MySQL
随着访问量的上升,MySQL架构的网站在数据库上都开始出现性能问题,因此使用大量的缓存技术来缓解数据库的压力,优化数据库的结构和索引。
![]()
此使Memcached就自然的成为一个非常时尚的技术产品;
PS扩展:
- 频繁的查询会对数据库造成很大的压力 因此缓存是比较好的处理方式;
- DAL是数据访问层(Data Access Layer)的缩写,即对数据表实现增删改查的操作
-
ASP.NET一共分为三层
表示层(USL/UI) 主要表示web方式
业务逻辑层(BLL)主要是针对具体问题的操作,也可以理解为对数据层的操作,对数业务逻辑处理
数据访问层 (DAL)主要是对原始数据的操作层
-
主从复制 读写分离
![]()
-
分表分库 水平拆分 mysql集群
高速缓存+主从复制 读写分离的基础上,mysql的写压力开始出现瓶颈。出现分表分库的操作
![]()
- mysql的扩展性瓶颈
-
目前- nginx(负载均衡)-tomcat-mysql/Oracle-hadoop集群等
2.NOSQL是什么?
not only sql (不仅仅是sql) 非关系型数据库
大规模数据存储的这些类型的数据不需要固定的模式,无需多余操作就可以横向扩展。
3.能够干嘛
易扩展 大数据量高性能 多样数据模型
大数据时代的3v和3高(高并发 高可扩 高性能)
|
海量 |
Volume |
|
多样 |
Variety |
|
实时 |
Velocity |
————————————————————————————————————
当下的应用是sql和nosql一起使用
NoSQL的经典应用(阿里巴巴)
商品信息--mysql
商品描述、详情、评价信息(多文字)--Mongdb
商品的图片--淘宝自己的TFS 谷歌的GFS Hadoop的HDFS
商品的关键字--ISearch(内用)
商品的波段性的热点高频信息--内存数据库(Tair、Redis、Memcache)
解决办法--UDSL 统一数据服务层
在网站应用集群和底层数据源之间,构建一层代理,统一数据层
- 高并发不建议关联查询
- 大公司用冗余数据避免关联查询
- 分布式事务不支持大多的高并发
NOSQL的聚合数据模型:
kv redis
美团redis+tair/阿里、百度memcache+redis/新浪berkeleyDB+redis
bson 文档型的数据库
列族 hbase Cassandra
图 社交网络 推荐系统 Neo4J
传统的ACID: 事务的属性
Atomic(原子性)、Consistency(一致性)、Isolation(隔离性)、Durability(持久性)
分布式数据库CAP:一个分布式系统不可能同时很好的满足以下三个需求(?)
Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性)三者不可兼得(三选二) 常用的是AP

Base理论
Basically Available(基本可用)
Soft state(软状态)
Eventually consistent(最终一致性)----来自 ebay 的架构师提出。
Base 理论是对 CAP 中一致性和可用性权衡的结果,其来源于对大型互联网分布式实践的总结,是基于 CAP 定理逐步演化而来的。其核心思想是:
无法做到强一致性(Strong consistency),但每个应用都可以根据自身的业务特点,采用适当的方式来使系统达到最终一致性(Eventual consistency)




浙公网安备 33010602011771号