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)

   

   

   

   

   

posted @ 2019-08-02 18:11  sssray  阅读(44)  评论(0)    收藏  举报