zoukankan      html  css  js  c++  java
  • 谈谈NOSQL

    从MongoDB引到NOSQL


    要讲MongoDB之前,首先要提到一个概念NOSQL(NoSQL = Not Only SQL )

    很大一部分数据是由关系型数据库管理系统(RDMBSs)来处理的,关系模型是结构化储存的主力军,宛如帝王般的存在

    而NOSQL就是那个断指的刺客,拿剑指向帝王

    它提倡使用非关系的数据储存

    ACID原则(关系型数据库的金科玉律)

    数据库中的事务(transaction)和现实生活中的交易类似,它就具有如下的四个特性

    1.A(Atomicity)原子性

    要么全部做完,要么大家都别做了(如果一个操作失败,那么整个事务都要回滚)

    2.C(Consistency)一致性

    数据库需要一直处于一致的状态,事物的运行不会改变数据库的一致性约束

    eg:如果有个A+B=10的约束,如果有一个事务改变了A那么就必须再改变B,使得依然满足A=B=10的这个条件。

    3.I(Isolation)独立性

    独立性是指并发的事务之间不会互相影响,在事务结束之前,数据是不会被影响的。

    4.D(Durability)持久性

    事务一旦改变了数据,那他就会永久的停留在数据库里面,即使发生宕机数据也不会发生丢失。

    为什么要去使用NOSQL?

    可以部分参考王垠的观点,《关系模型的实质》https://www.yinwang.org/blog-cn/2014/04/24/relational ,对数据进行挖掘,那么关系型的SQL就不适合处理这些庞大的用户数据。

    BASE

    BASE:Basically Available, Soft-state, Eventually Consistent。 由 Eric Brewer 定义。

    CAP理论的核心是:一个分布式系统不可能同时很好的满足一致性,可用性和分区容错性这三个需求,最多只能同时较好的满足两个。

    BASE是NoSQL数据库通常对可用性及一致性的弱要求原则:

    • Basically Availble --基本可用
    • Soft-state --软状态/柔性事务。 "Soft state" 可以理解为"无连接"的, 而 "Hard state" 是"面向连接"的
    • Eventual Consistency --最终一致性 最终一致性, 也是是 ACID 的最终目的。

    MongoDB

    既然没有关系模型,那要怎么样在数据库里面建立索引呢

    以MongoDB为例,文档存储一般用类似json的格式存储,存储的内容是文档型的。这样也就有有机会对某些字段建立索引,实现关系数据库的某些功能。

    参考资料
    https://www.mongodb.org.cn/tutorial/2.html

  • 相关阅读:
    java转换CSV文件生成xml格式数据
    HTTP的Form数据的结构
    使用Filter实现静态HTML缓冲(一种折中方法)
    webwork的interceptor来实现ajax功能(buffalo)
    Delphi中DLL的编写和调用(例子)
    用C#实现BHO(Brower Helper Object)
    基于Delphi的VFW视频捕获程序的开发
    关于WebWork2中的中文问题
    tomcat中的几点配置说明
    用Sitemesh控制页面布局
  • 原文地址:https://www.cnblogs.com/QuixoteY/p/11122848.html
Copyright © 2011-2022 走看看