精华内容
下载资源
问答
  • 常见的非关系数据库有哪些

    千次阅读 2020-06-02 16:04:57
    它是一种 NoSQL(not-only sql,泛指非关系数据库)的数据库。 Redis作为一个内存数据库,具有如下特点: 性能优秀, 数据在内存中, 读写速度非常快, 并支持10W QPS(每秒查询效率). 单进程单线程, 是线程安全的. ...

    1. 什么是非关系型数据库

    • 什么是关系型数据库
      关系型数据库就是需要依赖现实生活的具体模型来创建的数据库, 比如具体的人, 事物, 能表示多个表之间一对一, 一对多, 多对多的关系. 而且支持事务.
      常见的Mysql, Oracle都是关心型数据库.
    • 什么是非关系型数据库
      非关系型数据库就是不需要依赖现实生活中的具体模型就可以出数据库及表. 比较灵活便利.

    2. 为什么要用非关系型数据库

    • 关系型数据库具有数据安全且容易理解的优点, 但是随着互联网的发展,数据存储越来越多, 对于并发的要求也越来越高,项目中单纯使用关系型数据库已经无法满足这些要求, 于是应运而生了非关系型数据库.
    • 非关系型数据库具有格式灵活, 成本低, 查询快, 高性能, 高扩展的优点.
    • 实际开发中通常将关系型数据库和非关系型数据库结合使用, 不同非关系型数据库具体应用场景不同.

    3. 常用的非关系型数据库有哪些

    3.1 键值对key-value型

    • key-value数据库的主要特点是具有极高的并发读写性能
    • Key-value数据库是一种以键值对存储数据的一种数据库, 类似Java中的map. 可以将整个数据库理解为一个大的map, 每个键都会对应一个唯一的值.
    • 主流最常用的代表就是Redis等
      在这里插入图片描述

    3.2 文档型

    文档型按照功能划分又分为基于海量数据存储的和基于搜索内容存储的搜索引擎,数据结构可以理解为Json格式的文档类型.

    3.2.1 基于海量数据存储

    • 这类数据库的主要特点是在海量的数据中可以快速的查询数据
    • 文档存储通常使用内部表示法, 可以直接在应用程序中处理, 主要是JSON. JSON文档也可以作为纯文本存储在键值存储或关系数据库系统中.
      主流代表为MongoDB等
      在这里插入图片描述

    3.2.2 搜索引擎

    • 搜索引擎是专门用于搜索数据内容的NoSQL数据库管理系统。
    • 主要是用于对海量数据进行近实时的分析处理,可用于机器学习和数据挖掘
    • 主流代表为Elasticsearch, Solr等.

    3.3 列式数据库

    • 这类数据库的主要特点是具有很强的可拓展性
    • 关系型数据库都是以行为单位来存储数据的, 擅长以行为单位的读入处理, 比如特定条件数据的获取. 因此, 关系型数据库也被成为面向行的数据库。相反,面向列的数据库是以列为单位来存储数据的,擅长以列为单位读入数据。
    • 这类数据库想解决的问题就是传统数据库存在可扩展性上的缺陷,这类数据库可以适应数据量的增加以及数据结构的变化,将数据存储在记录中,能够容纳大量动态列。由于列名和记录键不是固定的,并且由于记录可能有数十亿列,因此可扩展性存储可以看作是二维键值存储。
    • 主流代表为HBase等.
      在这里插入图片描述

    3.4 图数据库

    • 将数据库图形化,数据结构是图结构,
      在这里插入图片描述

    4. 几种非关系型数据库对比

    RedisMongoDBElasticSearchHbaseNeo4J
    数据结构键值对的key-value形式Json文档格式Json文档格式列簇式存储,将同一列数据存到一起图结构
    典型应用场景缓存和并发数据库1. 做缓存数据库 2. 海量数据且对允许少许数据丢失, 例如用户评论数据, 点赞数据等海量数据进行搜索应用, 例如网站搜索页面的数据大数据分布式系统,海量数据且数据比较分散社交网络,推荐系统等
    优点1. 数据存在内存中 2. 线程安全 3. 读写效率高1. 存储海量数据 2. 表结构可变数据量大,基于Lunence倒排索引原理,能实现海量数据分词搜索1.高扩展性 2. 海量数据利用图结构相关算法,符合人的思维
    缺点1.数据无结构化 2. 存储少量数据读写效率不如Reids读写效率不如Redis优点也是缺点, 没有太多花哨的功能不好做分布式系统

    真实开发也是多种数据库结合使用, 如图下图所示:
    在这里插入图片描述

    展开全文
  • 浅析关系数据库和NoSql非关系数据库

    千次阅读 2015-08-19 18:54:00
    关系数据库在经过二十几年的发展,已经变的功能强大,使用广泛,产品成熟的数据库系统,现在使用主流的数据库都为关系型数据库,比较熟悉的如SQL Server、Mysql、Oracle、Sybase、Informix、DB2等。在网络上使用比较...
    1 关系数据库 
    
      1.1 关系数据库的简介 
      支持关系模型的数据库系成之为关系数据库,是目前各类数据库中使用最为广泛的数据库系统。关系数据库在经过二十几年的发展,已经变的功能强大,使用广泛,产品成熟的数据库系统,现在使用主流的数据库都为关系型数据库,比较熟悉的如SQL Server、Mysql、Oracle、Sybase、Informix、DB2等。在网络上使用比较广泛的是Sql Server、Mysql和Oracle。 
      1.2 关系数据库的特点 
      关系数据库是支持关系模型的数据库系统。而关系模型是由二维表来表示实体和实体间联系的模型。使用二维表存储数据,对使用者来说很直观,更容易理解。使用关系数据库的优势主要表现在以下几个特性: 
      (1)操作方便性。通过开发应用程序和数据库连接,用户能方便的对数据库中数据进行操作,特别对没有数据库基础的人,也可以通过数据库管理系统,直接在数据库中操作。 
      (2)易于维护性。关系数据库在完整性约束中提供了实体完整性、参照完整性和用户定义的完整性,通过完整性约束可以大大降低了 数据存储 的冗余及数据不一致的概率。 
      (3)访问数据的灵活性。关系数据库中提供了诸如视图,存储过程,触发器,索引等对象,是访问数据更加灵活。 
      1.3 目前关系数据库面临的问题 
      随着互联网技术的发展,尤其是web2.0 技术使用,更注重用户和服务器以及用户和用户之间的交互作用,用户成为既是网站内容的浏览者,也是网站内容的制造者。例如:博客(BLOG)、社会网络(SNS)、以及现在比较热的微博等。对于在使用web2.0技术并且访问量比较大网站,使用传统关系数据库就会遇到一些问题,主要表现在以下几点: 
      (1)对数据库高并发读写的需求 
      Web 2.0网站要根据用户个性化信息来实时生成动态页面和提供动态信息,无法使用动态页面静态化技术,因此数据库的并发负载非常高,往往要达到每秒上万次的的读写请求,此时服务器上的磁盘根本无法承受如此之多的读写请求。 
      (2)对海量数据的高效率存储和访问的需求 
      对于大型的社交网站网站,每天用户产生海量的用户动态,随着用户的不断增减,一个数据表中的记录可能有几亿条,对于关系型数据库来说,在一个有上亿条记录的表里面进行SQL询,效率是极其低下的。一些大型Web 网站的用户登录系统也是如此,如腾讯、163邮箱都有数亿的帐号。 
      (3)对数据库的高扩展性和高可用性的需求 
      在基于Web的架构中,数据库是最难进行横向扩展的,当用户量和访问量增加时, 数据库没有办法像Web Server 那样简单的通过添加更多的硬件和服务结点来扩展性能和负载能力,对于很多需要24 小时不间断服务的网站来说,对数据库系统的升级和扩展往往需要停机维护。 
      2 非关系数据库NoSql 
      2.1 NoSql概述 
      NoSql是应对关系数据库出现的问题而发展起来的,近几年随着web2.0技术的广泛应用,NoSQL 得到了快速的发展,NoSQL数据库指的是非关系性的、定义不是很明确的数据存储仓库。NoSQL数据库不再使用关系模型的概念,放弃了使用SQL语句对数据库进行操作。 
      NoSQL 数据库根据数据的存储模型和特点又分为很多种类。主要有 
      (1)面向列的存储系统。按列存储,区别于关系数据库中按行存储,容易扩展,适用与存储海量数据,对一个或几个字段进行查询的效率很高,但在复杂查询功能比较弱,如多表联合查询。此类数据库产品有BigTable、Hbase、assandra和Hypertable。 
      (2)面向文档存储系统。保证海量 数据存储 的同时,具有良好的查询性能。用JSON或类JSON格式进行存储,存储的内容是文档型的,文档中的格式是自由的。此类数据库产品有MongoDB和CouchDB。 
      (3)键-值(key/value)存储系统。是最简单的Nosql系统,具有极高的并发读写性能。通过key能够快速查询到value,并且不考虑value 的格式。此类数据库产品有Tokyo Cabinet/Tyrant、BerkeleyDB、MemcacheDB和Redis。 
      (4)图存储系统。图形关系的最佳存储模式。如Neo4J、FlockDB。 
      (5)对象存储。类似面向对象语言的语法操作数据库,通过对象的方式存取数据。此类数据库产品有db4o、Versant。 
      (6)xml 数据库。高效存储XML 数据,并支持XML的内部查询语法。此类数据库产品有Berkeley DBXML、BaseX。
      2.2 NoSql数据库的优势 
      相对于 关系数据库 ,No sql 数据库的优点主要表现在: 
      (1)容易扩展和高性能。NoSQL 数据库种类很多,但是都有一个共同的特点就是去掉关系型数据库的关系型特性。数据之间彼此无关系,这样就非常容易扩展。可以存储海量数据。同样由于数据之间无关系,数据库的结构简单,在处理大数据量时,NoSQL 数据库会有出色的读写性能。    (2)灵活的 数据模型 。NoSQL 数据库不使用传统的关系数据库模型,而是使用如key-value 存储、文档型的、列存储、图型 数据库 、xml 等方式存储数据模型,使用这些模型都无需事先为要存储的数据建立字段,随时可以存储自定义的数据格式。同时根据需求可以选择合适的模型。 
      (3)经济性 
      在数据量和访问量比较大的情况下,传统的关系数据库对服务器的要求比较高,甚至使用专用硬件设备,这样造价就比较高。而NoSQL数据库的易扩展的特点使配置较低服务器上运行,也可以使用低配服务器组成集群来使用,并且有研究证实使用NoSql数据库基于低配硬件的分布式存储解决方案比现在的高端关系数据库更加可靠。这样就极大的降低了投资成本。 
      2.3 NoSql的不足 
      (1)成熟度方面。NoSQL数据库的实际应用,近几年才逐渐开始使用,并且大部分NoSQL的产品都还处于实验和不断完善的阶段。在产品成熟度和稳定性方面,NoSq数据库远不及发展了二十多年且已被广泛使用的 关系数据库 。 
      (2)商业支持方面。大部分NoSQL数据库都是开源项目,没有专门的 数据库 厂商提供完善的服务,一旦出现故障,只能自己的能力解决,对于一般使用者来说风险比较大。 
      (3)使用习惯方面。软件开发人员已经习惯了关系数据库的模式,解决问题的思路已经被固定在关系模型上,而NoSQL数据库的开发以放弃了关系模型,要软件开发人员放弃原来的思路,而掌握和使用NoSql数据库是很困难的,导致使用NoSQL数据库的开发人员不可能在短时间内快速增加,这也成为NoSql数据库发展的一个障碍。 
      3 关系数据库与NoSQL 数据库结合使用 
      Web2.0时代,关系数据库不能满足对 数据库 高并发读写、海量数据的高效率存储和访问、高扩展性和高可用性方面的需求,而NoSql数据库可以解决这些问题,从而推动了NoSql数据库应用和发展,那是不是说NoSql数据库就能取代关系数据可了呢?从目前来看,基于NoSql数据库的不足,NoSql数据库还不能完全取代关系数据库,对NoSql数据库的使用,单独使用的情况很少,大多数情况下都是关系数据库和NoSql数据库结合使用。 
      关系数据库和NoSql数据库结合使用又分为两种模式: 
      (1)NoSql数据库作为辅助存储。在这种模式下,把所有的数据都存放在关系数据库中,可能被经常频繁读取的数据再存放在NoSql数据库中一份,其目的是提高数据的查询速度,减少 关系数据库 的并发访问负载。 
      (2)NoSql数据库作为主存储。在这种模式下,把所有的数据存储在NOSQL数据库中,为了一些特殊业务或功能的需要,在将数据存入NOSQL 的时候,同时存储到关系数据库一份。在数据存储和查询主要是由No sql 数据库完成,少量的数据是从关系数据库读取。 
      4 结语 
      目前 关系数据库 仍是主流数据库,仍被广泛使用,NoSQL数据库还不能完全取代关系数据库,虽然NoSql数据库打破了关系数据库存储的观念,采用创新的存储方式,在快速读写、海量存储,高扩展性上很好满足web2.0时代 数据存储 的要求,但NoSql数据库也有自己的缺陷。在现阶段的某些情况下,可以将关系型数据库和NoSQL数据库结合使用,相互弥补各自的不足。随着NoSql数据库的不断发展和完善,将来也有可能取代关系数据库成为主流数据库。 
      参考文献: 
      [1]卢冬海,何先波.浅析NoSQL数据库 中国西部科技 2011年02期 
      [2]黄贤立.NoSQL 非关系型数据库的发展及应用初探 福建电脑 2010年7期 

      [3]张华强.关系型数据库与NoSQL 数据库 电脑知识与技术 2010年20期

    原文地址:http://www.xzbu.com/8/view-4313920.htm


    展开全文
  • 数据库通常分为层次式数据库、网络式数据库关系数据库三种。而不同的数据库是按不同的数据结构来联系和组织的。  1.数据结构模型  (1)数据结构  所谓数据结构是指数据的组织形式或数据之间的联系。...

    数据库通常分为层次式数据库、网络式数据库和关系式数据库三种。而不同的数据库是按不同的数据结构来联系和组织的。

      1.数据结构模型

      (1)数据结构

      所谓数据结构是指数据的组织形式或数据之间的联系。如果用D表示数据,用R表示数据对象之间存在的关系集合,则将DS=(D,R)称为数据结构。例如,设有一个电话号码簿,它记录了n个人的名字和相应的电话号码。为了方便地查找某人的电话号码,将人名和号码按字典顺序排列,并在名字的后面跟随着对应的电话号码。这样,若要查找某人的电话号码(假定他的名字的第一个字母是Y),那么只须查找以Y开头的那些名字就可以了。该例中,数据的集合D就是人名和电话号码,它们之间的联系R就是按字典顺序的排列,其相应的数据结构就是DS=(D,R),即一个数组

      (2)数据结构种类

      数据结构又分为数据的逻辑结构和数据的物理结构。数据的逻辑结构是从逻辑的角度(即数据间的联系和组织方式)来观察数据,分析数据,与数据的存储位置无关。数据的物理结构是指数据在计算机中存放的结构,即数据的逻辑结构在计算机中的实现形式,所以物理结构也被称为存储结构。这里只研究数据的逻辑结构,并将反映和实现数据联系的方法称为数据模型。

      目前,比较流行的数据模型有三种,即按图论理论建立的层次结构模型和网状结构模型以及按关系理论建立的关系结构模型。

      2.层次、网状和关系数据库系统

      (1)层次结构模型

      层次结构模型实质上是一种有根结点的定向有序树(在数学中"树"被定义为一个无回的连通图)。下图是一个高等学校的组织结构图。这个组织结构图像一棵树,校部就是树根(称为根结点),各系、专业、教师、学生等为枝点(称为结点),树根与枝点之间的联系称为边,树根与边之比为1:N,即树根只有一个,树枝有N个。

      按照层次模型建立的数据库系统称为层次模型数据库系统。IMS(Information Manage-mentSystem)是其典型代表。

      (2)网状结构模型

      按照网状数据结构建立的数据库系统称为网状数据库系统,其典型代表是DBTG(Data Base Task Group)。用数学方法可将网状数据结构转化为层次数据结构。

      (3)关系结构模型

      关系式数据结构把一些复杂的数据结构归结为简单的二元关系(即二维表格形式)。例如某单位的职工关系就是一个二元关系。

      由关系数据结构组成的数据库系统被称为关系数据库系统。

      在关系数据库中,对数据的操作几乎全部建立在一个或多个关系表格上,通过对这些关系表格的分类、合并、连接或选取等运算来实现数据的管理。dBASEII就是这类数据库管理系统的典型代表。对于一个实际的应用问题(如人事管理问题),有时需要多个关系才能实现。用dBASEII建立起来的一个关系称为一个数据库(或称数据库文件),而把对应多个关系建立起来的多个数据库称为数据库系统。dBASEII的另一个重要功能是通过建立命令文件来实现对数据库的使用和管理,对于一个数据库系统相应的命令序列文件,称为该数据库的应用系统。因此,可以概括地说,一个关系称为一个数据库,若干个数据库可以构成一个数据库系统。数据库系统可以派生出各种不同类型的辅助文件和建立它的应用系统。


    在上面提到的“三高”需求面前,关系数据库遇到了难以克服的障碍,而对于web2.0网站来说,关系数据库的很多主要特性却往往无用武之地,例如: 

    1、数据库事务一致性需求 
    很多web实时系统并不要求严格的数据库事务,对读一致性的要求很低,有些场合对写一致性要求也不高。因此数据库事务管理成了数据库高负载下一个沉重的负担。 

    2、数据库的写实时性和读实时性需求 
    对关系数据库来说,插入一条数据之后立刻查询,是肯定可以读出来这条数据的,但是对于很多web应用来说,并不要求这么高的实时性,比方说我(JavaEye的robbin)发一条消息之后,过几秒乃至十几秒之后,我的订阅者才看到这条动态是完全可以接受的。 

    3、对复杂的SQL查询,特别是多表关联查询的需求 
    任何大数据量的web系统,都非常忌讳多个大表的关联查询,以及复杂的数据分析类型的复杂SQL报表查询,特别是SNS类型的网站,从需求以及产品设计角度,就避免了这种情况的产生。往往更多的只是单表的主键查询,以及单表的简单条件分页查询,SQL的功能被极大的弱化了。 


    关系数据库的特点:
    特点
    数据库管理系统将具有一定结构的数据组成一个集合,它主要具有以下几个特点:
    1. 数据的结构化 数据库中的数据并不是杂乱无章、毫不相干的,它们具有一定的组织结构,属于同一集合的数据具有相似的特征。
    2. 数据的共享性 在一个单位的各个部门之间,存在着大量的重复信息。使用数据库的目的就是要统一管理这些信息,减少冗余度,使各个部门共同享有相同的数据。
    3. 数据的独立性 数据的独立性是指数据记录和数据管理软件之间的独立。数据及其结构应具有独立性,而不应该去改变应用程序。
    4. 数据的完整性 数据的完整性是指保证数据库中数据的正确性。可能造成数据不正确的原因很多,数据库管理系统通过对数据性质进行检查而管理它们。
    5. 数据的灵活性 数据库管理系统不是把数据简单堆积,它在记录数据信息的基础上具有很多的管理功能,如输入、输出、查询、编辑修改等。
    6. 数据的安全性 根据用户的职责,不同级别的人对数据库具有不同的权限,数据库管理系统应该确保数据的安全性。

    简单言之,关系数据库就是,数据库表跟表之间需要存在一定的关系。比如,你系跟学生的一对多关系之类。
    而非关系数据库,就是表跟表之间不存在关系

    关系型数据库的特点

    关系型数据库最大特点就是事务的一致性:传统的关系型数据库读写操作都是事务的,具有ACID(原子性Atomicity、一致性Consistency、隔离性Isolation、持久性Durability)的特点,C就是一致性(Consistency),这个特点是关系型数据库的灵魂(其他三个AID都是为其服务的),这个特性使得关系型数据库可以用于几乎所有对一致性有要求的系统中,如典型的银行系统。

    但是,在网页应用中,尤其是SNS应用中,一致性却不是显得那么重要,用户A看到的内容和用户B看到同一用户C内容更新不一致是可以容忍的,或者说,两个人看到同一好友的数据更新的时间差那么几秒是可以容忍的,因此,关系型数据库的最大特点在这里已经无用武之地,起码不是那么重要了。

    相反的,关系型数据库为了维护一致性所付出的巨大代价就是其读写性能比较差,而像微博,facebook这类SNS的应用,对并发读写能力要求极高,关系型数据库已经无法应付(在读方面,传统上为了克服关系型数据库缺陷,提高性能,都是增加一级memcache来静态化网页,而在SNS中,变化太快,memcache已经无能为力),因此,必须用新的一种数据结构化存储来来代替关系数据库。

    关系数据库的另一个特点就是其具有固定的表结构,因此,其扩展性极差,而在SNS中,系统的升级,功能的增加,往往意味着数据结构巨大改动,这一点关系型数据库也难以应付,需要新的结构化数据存储。

    于是,非关系数据库(NoSQL)应运而生,由于不可能用一种数据结构化存储方式应付所有的新的需求,因此,非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合。

    必须强调的是,数据的持久存储,尤其是海量数据的持久存储,还是需要关系数据库这员老将。

    非关系型数据库分类

    由于关系型数据库本身天然的多样性,以及出现的时间较短,因此,不像关系型数据库,有几种数据库能够一统江山,关系型数据库的非常多,并且大部分都是开源的,这里列出一些:Redis,Tokyo Cabinet,Cassandra,Voldemort,MongoDB,Dynomite,HBase,CouchDB,Hypertable,Riak,Tin, Flare,Lightcloud,KiokuDB,Scalaris,Kai,ThruDB…

    这些数据库中,其实实现大部分都比较简单,除了一些共性外,很大一部分都是针对某些特定的应用需求出现的,因此,对于该类应用,具有极高的性能。依据结构化方法以及应用场合的不同,主要分为以下几类:

    1. 面向高性能并发读写的Key-Value数据库:Key-Value数据库的主要特点就是具有极高的并发读写性能,Redis,Tokyo Cabinet,Flare就是这类的代表。
    2. 面向海量数据访问的面向文档数据库(Document store):这类数据库的特点是,可以在海量的数据中快速的查询数据。典型代表为MongoDB以及CouchDB。
    3. 面向可扩展性的分布式数据库(Object Store):这类数据库想解决的问题就是传统数据库在可扩展性上的缺陷,这类数据库可以适应数据量的增加以及数据结构的变化,Google Appengine的Big Table就是这类的典型代表,并且,BigTable特别适用于Map Reduce处理。

    这里只对这几类数据库简要的介绍,需要详情可以看:http://en.wikipedia.org/wiki/NoSQL

    有空的话,以后也扯扯各类的具体差别,另外,个人感觉RAM Database挺有前途的,果如此,memcache就几乎不用了。



    1. 关系型数据库

    关系型数据库,是指采用了关系模型来组织数据的数据库。

    关系模型是在1970年由IBM的研究员E.F.Codd博士首先提出的,在之后的几十年中,关系模型的概念得到了充分的发展并逐渐成为主流数据库结构的主流模型。

    简单来说,关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织

    关系模型中常用的概念:

    • 关系:可以理解为一张二维表,每个关系都具有一个关系名,就是通常说的表名
    • 元组:可以理解为二维表中的一行,在数据库中经常被称为记录
    • 属性:可以理解为二维表中的一列,在数据库中经常被称为字段
    • :属性的取值范围,也就是数据库中某一列的取值限制
    • 关键字:一组可以唯一标识元组的属性,数据库中常称为主键,由一个或多个列组成
    • 关系模式:指对关系的描述。其格式为:关系名(属性1,属性2, ... ... ,属性N),在数据库中成为表结构

    关系型数据库的优点:

    • 容易理解:二维表结构是非常贴近逻辑世界的一个概念,关系模型相对网状、层次等其他模型来说更容易理解
    • 使用方便:通用的SQL语言使得操作关系型数据库非常方便
    • 易于维护:丰富的完整性(实体完整性、参照完整性和用户定义的完整性)大大减低了数据冗余和数据不一致的概率

    2. 关系型数据库瓶颈

    • 高并发读写需求

    网站的用户并发性非常高,往往达到每秒上万次读写请求,对于传统关系型数据库来说,硬盘I/O是一个很大的瓶颈

    • 海量数据的高效率读写

    网站每天产生的数据量是巨大的,对于关系型数据库来说,在一张包含海量数据的表中查询,效率是非常低的

    • 高扩展性和可用性

    在基于web的结构当中,数据库是最难进行横向扩展的,当一个应用系统的用户量和访问量与日俱增的时候,数据库却没有办法像web server和app server那样简单的通过添加更多的硬件和服务节点来扩展性能和负载能力。对于很多需要提供24小时不间断服务的网站来说,对数据库系统进行升级和扩展是非常痛苦的事情,往往需要停机维护和数据迁移。


    对网站来说,关系型数据库的很多特性不再需要了:

    • 事务一致性

    关系型数据库在对事物一致性的维护中有很大的开销,而现在很多web2.0系统对事物的读写一致性都不高

    • 读写实时性

    对关系数据库来说,插入一条数据之后立刻查询,是肯定可以读出这条数据的,但是对于很多web应用来说,并不要求这么高的实时性,比如发一条消息之后,过几秒乃至十几秒之后才看到这条动态是完全可以接受的

    • 复杂SQL,特别是多表关联查询

    任何大数据量的web系统,都非常忌讳多个大表的关联查询,以及复杂的数据分析类型的复杂SQL报表查询,特别是SNS类型的网站,从需求以及产品阶级角度,就避免了这种情况的产生。往往更多的只是单表的主键查询,以及单表的简单条件分页查询,SQL的功能极大的弱化了


    在关系型数据库中,导致性能欠佳的最主要原因是多表的关联查询,以及复杂的数据分析类型的复杂SQL报表查询。为了保证数据库的ACID特性,我们必须尽量按照其要求的范式进行设计,关系型数据库中的表都是存储一个格式化的数据结构。每个元组字段的组成都是一样,即使不是每个元组都需要所有的字段,但数据库会为每个元组分配所有的字段,这样的结构可以便于标语表之间进行链接等操作,但从另一个角度来说它也是关系型数据库性能瓶颈的一个因素。

    3. NoSQL

    NoSQL一词首先是Carlo Strozzi在1998年提出来的,指的是他开发的一个没有SQL功能,轻量级的,开源的关系型数据库。这个定义跟我们现在对NoSQL的定义有很大的区别,它确确实实字如其名,指的就是“没有SQL”的数据库。但是NoSQL的发展慢慢偏离了初衷,我们要的不是“no sql”,而是“no relational”,也就是我们现在常说的非关系型数据库了。

    2009年初,Johan Oskarsson举办了一场关于开源分布式数据库的讨论,Eric Evans在这次讨论中再次提出了NoSQL一词,用于指代那些非关系型的,分布式的,且一般不保证遵循ACID原则的数据存储系统。Eric Evans使用NoSQL这个词,并不是因为字面上的“没有SQL”的意思,他只是觉得很多经典的关系型数据库名字都叫“**SQL”,所以为了表示跟这些关系型数据库在定位上的截然不同,就是用了“NoSQL“一词。

    注:数据库事务必须具备ACID特性,ACID是Atomic原子性,Consistency一致性,Isolation隔离性,Durability持久性。


    非关系型数据库提出另一种理念,例如,以键值对存储,且结构不固定,每一个元组可以有不一样的字段,每个元组可以根据需要增加一些自己的键值对,这样就不会局限于固定的结构,可以减少一些时间和空间的开销。使用这种方式,用户可以根据需要去添加自己需要的字段,这样,为了获取用户的不同信息,不需要像关系型数据库中,要对多表进行关联查询。仅需要根据id取出相应的value就可以完成查询。但非关系型数据库由于很少的约束,他也不能够提供像SQL所提供的where这种对于字段属性值情况的查询。并且难以体现设计的完整性。他只适合存储一些较为简单的数据,对于需要进行较复杂查询的数据,SQL数据库显的更为合适。


    4. 关系型数据库  V.S.  非关系型数据库

    关系型数据库的最大特点就是事务的一致性:传统的关系型数据库读写操作都是事务的,具有ACID的特点,这个特性使得关系型数据库可以用于几乎所有对一致性有要求的系统中,如典型的银行系统。

    但是,在网页应用中,尤其是SNS应用中,一致性却不是显得那么重要,用户A看到的内容和用户B看到同一用户C内容更新不一致是可以容忍的,或者说,两个人看到同一好友的数据更新的时间差那么几秒是可以容忍的,因此,关系型数据库的最大特点在这里已经无用武之地,起码不是那么重要了。

    相反地,关系型数据库为了维护一致性所付出的巨大代价就是其读写性能比较差,而像微博、facebook这类SNS的应用,对并发读写能力要求极高,关系型数据库已经无法应付(在读方面,传统上为了克服关系型数据库缺陷,提高性能,都是增加一级memcache来静态化网页,而在SNS中,变化太快,memchache已经无能为力了),因此,必须用新的一种数据结构存储来代替关系数据库。

    关系数据库的另一个特点就是其具有固定的表结构,因此,其扩展性极差,而在SNS中,系统的升级,功能的增加,往往意味着数据结构巨大变动,这一点关系型数据库也难以应付,需要新的结构化数据存储。

    于是,非关系型数据库应运而生,由于不可能用一种数据结构化存储应付所有的新的需求,因此,非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合

    必须强调的是,数据的持久存储,尤其是海量数据的持久存储,还是需要一种关系数据库这员老将


    5. 非关系型数据库分类

    由于非关系型数据库本身天然的多样性,以及出现的时间较短,因此,不想关系型数据库,有几种数据库能够一统江山,非关系型数据库非常多,并且大部分都是开源的。

    这些数据库中,其实实现大部分都比较简单,除了一些共性外,很大一部分都是针对某些特定的应用需求出现的,因此,对于该类应用,具有极高的性能。依据结构化方法以及应用场合的不同,主要分为以下几类:

    • 面向高性能并发读写的key-value数据库:

    key-value数据库的主要特点即使具有极高的并发读写性能,Redis,Tokyo Cabinet,Flare就是这类的代表

    • 面向海量数据访问的面向文档数据库:

    这类数据库的特点是,可以在海量的数据中快速的查询数据,典型代表为MongoDB以及CouchDB

    • 面向可扩展性的分布式数据库:

    这类数据库想解决的问题就是传统数据库存在可扩展性上的缺陷,这类数据库可以适应数据量的增加以及数据结构的变化







    展开全文
  • 关系数据库

    千次阅读 2013-06-19 17:40:10
    关系数据库 科技名词定义 中文名称:关系数据库英文名称:relational database 定义:按照关系模型建立的数据库。 应用学科:通信科技(一级学科);服务与应用(二级学科) 以上内容由全国科学技术名词...

    关系数据库

    科技名词定义

    中文名称:
    关系数据库
    英文名称:
    relational database
    定义:
    按照关系模型建立的数据库。
    应用学科:
    通信科技(一级学科);服务与应用(二级学科)
    以上内容由 全国科学技术名词审定委员会审定公布

    百科名片

    关系数据库   
    关系数据库
    关系 数据库,是建立在关系数据库模型基础上的数据库,借助于 集合代数等概念和方法来处理数据库中的数据。目前主流的关系数据库有oracle、SQL、access、db2、sqlserver,sybase等。


    简介

    定义

    关系数据库(relational database)是一个被组织成一组拥有正式描述性的表格,该形式的表格作用的实质是装载着数据项的特殊收集体,这些表格中的数据能以许多不同的方式被存取或重新召集而不需要重新组织数据库表格。关系数据库是在 1970 年被 IBM公司的 E. F. Codd发明的。
    标准用户和应用程序到一个关系数据库的接口是结构化查询语言(SQL)。 SQL声明被用来交互式查询来自一个关系数据库的信息和为报告聚集数据。
    除了相对地容易创建和存取之外,关系数据库具有容易扩充的重要 优势。在最初的数据库创造之后,一个新的数据种类能被添加而不需要修改所有的现有应用软件。
    一个关系数据库是包含进入预先定义的种类之内的一组表格。每个表格(有时被称为一个关系)包含用列表示的一个或更多的数据种类。 每行包含一个唯一的数据实体,这些数据是被列定义的种类。 举例来说,典型的商业订单条目数据库会包括一个用列表示的描述一个客户信息的表格:名字、住址、 电话号码,等等。 另外的一个表格会描述一个订单:产品、客户、日期、销售价格,等等。数据库的一个使用者可以获得适合了该使用者的需要的数据库的观点。举例来说,一位分公司办公室 经理可能喜欢在一个特定的日期之后已经买产品的所有客户的一项观点或报告。同一家公司的 财务服务经理可能从相同的表格获得关于需要被支付的帐户的报告。
    当创造一个关系数据库的时候,你能定义数据列的可能值的范围和可能应用于那个数据值的进一步约束。举例来说,一个可能客户的范围可以允许达到十个可能的客户名字但是在一张表格中被约束只允许这些客户名字中的三个被列举。
    关系数据库(relational database)的定义造成元数据的一张表格或造成表格、列、范围和约束的正式描述。 [1]

    基本概念

    关系模型建立在代数集合的基础上。
    1.关系
    1)域(Domain)
    域是一组具有相同数据类型的值的集合。
    例:整数,实数,介于某个 取值范围的整数,长度指定长度的字符串集合,{‘男’,‘女’},介于某个取值范围的日期等
    2) 笛卡尔积(Cartesian Product)
    给定一组域D1,D2,…,Dn,域名不能相同,后面提到的更名可以解决。D1,D2,…,Dn的笛卡尔积为:
    D1×D2×…×Dn={(d1,d2,…,dn)|di?Di,i=1,2,…,n}
    所有域的所有取值的一个组合,不能重复。
    ◇元组(Tuple)
    笛卡尔积中每一个元素(d1,d2,…,dn)叫作一个n元组(n-tuple)或简称元组。
    ◇分量(Component)
    笛卡尔积元素(d1,d2,…,dn)中的每一个值di叫作一个分量。
    ◇基数(Cardinal number)
    若Di(i=1,2,…,n)为 有限集,其基数为Mi(i=1,2,…,n)
    在上例中,基数:2×2×3=12,即D1×D2×D3共有2×2×3=12个元组
    笛卡尔积的表示方法
    笛卡尔积可表示为一个二维表。表中的每行对应一个元组,表中的每列对应一个域。
    3)关系(Relation)
    ◇关系
    D1×D2×…×Dn的子集叫作在域D1,D2,…,Dn上的关系,表示为 : R(D1,D2,…,Dn)
    (R:关系名;n:关系的目或度(Degree))
    注意:
    关系是笛卡尔积的有限子集。无限关系在 数据库系统中是无意义的。
    由于笛卡尔积不满足 交换律,即
    (d1,d2,…,dn )≠(d2,d1,…,dn )
    但关系满足交换律,即
    (d1,d2 ,…,di ,dj ,…,dn)=(d1,d2 ,…,dj,di ,…,dn) (i,j = 1,2,…,n)
    解决方法:为关系的每个列附加一个属性名以取消关系元组的有序性
    ◇元组
    关系中的每个元素是关系中的元组,通常用t表示。
    ◇单元关系与 二元关系
    当n=1时,称该关系为单元关系(Unary relation)。
    当n=2时,称该关系为二元关系(Binary relation)。
    ◇关系的表示
    关系也是一个二维表,表的每行对应一个元组,表的每列对应一个域。
    ◇属性
    关系中不同列可以对应相同的域,为了加以区分,必须对每列起一个名字,称为 属性(Attribute)。
    n目关系必有n个属性
    ◇码
    候选码(Candidate key)
    超码是可以唯一标识关系的属性或属性组,候选码是超码的最小真子集。
    在最简单的情况下, 候选码只包含一个属性。称为 单码(Single Key)。
    在最极端的情况下, 关系模式的所有属性组是这个关系模式的 候选码,称为 全码(All-key)。
    主码
    若一个关系有多个 候选码,则选定其中一个为 主码(Primary key),
    关系中, 候选码属性称为主属性(Prime attribute),不包含在任何候选码中的属性称为非码属性(Non-key attribute)。
    ◇三类关系
    基本关系(基本表或基表):实际存在的表,是实际存储数据的 逻辑表示
    查询表:查询结果对应的表
    视图表:由基本表或其他视图表导出的表,是虚表,不对应实际存储的数据
    2.关系数据库
    1)关系数据库
    在一个给定的应用领域中,所有实体及实体之间联系的集合构成一个关系数据库。
    2)关系数据库的型与值
    关系数据库的型称为关系数据库模式,是对关系数据库的描述,若干域的定义,在这些域上定义的若干关系模式。
    关系 数据库的值是这些关系模式在某一时刻对应的关系的集合,通常简称为关系数据库。

    历史

    1970年,IBM的 研究员,有“关系数据库之父”之称的 埃德加·弗兰克·科德(Edgar Frank Codd或 E. F. Codd)博士在刊物《Communication of the ACM》上发表了题为“A Relational Model of Data for Large Shared Data banks(大型共享数据库的 关系模型)”的论文,文中首次提出了数据库的关系模型的概念,奠定了关系模型的理论基础。后来Codd又陆续发表多篇文章,论述了 范式理论和衡量关系系统的12条标

      相关书籍

    准,用数学理论奠定了关系数据库的基础。IBM的Ray Boyce和Don Chamberlin将Codd关系数据库的12条准则的数学定义以简单的关键字语法表现出来,里程碑式地提出了 SQL语言。由于关系模型简单明了、具有坚实的数学理论基础,所以一经推出就受到了学术界和产业界的高度重视和广泛响应,并很快成为数据库市场的主流。20世纪80年代以来,计算机厂商推出的 数据库管理系统几乎都支持关系模型,数据库领域当前的研究工作大都以关系模型为基础。

    结构

    单一结构

    单一的数据结构----关系
    现实世界的实体以及实体间的各种联系均用关系来表示
    数据的逻辑结构---- 二维表
    从用户角度,关系模型中数据的逻辑结构是一张二维表。
    但是关系 模型的这种简单的数据结构能够表达丰富的语义,描述出现实世界的实体以及实体间的各种关系。

    主数据库

    oracle数据库oracle公司(中文名叫 甲骨文公司)的,还有 SQL, accessdb2IBM的(中文名称是国际商务机器公司)。主流的关系数据库还有微软的 Sql server,Sybase公司的 sybase,(英孚美)软件公司的 informix以及免费的 MySQL等。

    集合

    1)操作
    ◇查询:选择、投影、连接、除、并、交、差
    数据更新:插入(insert)、删除(delete)、修改(update)
    查询的表达能力是其中最主要的部分
    2)特点
    集合操作方式:即操作的 对象和结果都是集合。
    (非关系 数据模型的数据操作方式:一次一记录文件系统的数据操作方式)
    3)种类
    ◇关系代数语言
    用对关系的运算来表达查询要求
    典型代表:ISBL
    ◇关系演算语言:用谓词来表达查询要求 元组关系演算语言
    谓词变元的基本对象是元组变量
    典型代表:APLHA, QUEL
    ◇域关系演算语言
    关系数据库

      关系数据库

    谓词变元的基本对象是域变量
    典型代表:QBE
    ◇具有关系代数和关系演算双重特点的语言
    典型代表:SQL
    4)关系数据语言的特点
    ◇关系语言是一种高度非过程化的语言
    a.存取路径的选择由DBMS的优化机制来完成
    b.用户不必用循环结构就可以完成 数据操作
    ◇能够嵌入高级语言中使用
    ◇关系代数、元组关系演算和域关系演算三种语言在表达能力上完全等价

    约束

    通常由 关系系统自动支持
    2)参照完整性
    早期系统不支持,但大型系统能自动支持
    3)用户定义的完整性
    反映应用领域需要遵循的约束条件,体现了具体领域中的语义约束
    用户定义后由系统支持
    展开全文
  • 流行的数据库有哪些

    千次阅读 2020-09-09 10:05:42
    MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件。MySQL目前最流行的开源数据库,被甲骨文公司所占用,...
  • 以下不同的数据库类型中,哪些不属于关系数据库范畴 正确答案: A C D 你的答案: A C (错误) MongoDB PostgreSQL Redis HBase 添加笔记 求解答(0) 收藏 纠错 ...
  • 常见的关系数据库

    千次阅读 2013-11-23 18:15:09
    常见的关系数据库 1、Oracle数据库  Oracle(甲骨文)公司 2、DB2数据库  IBM公司 3、Sybase数据库  Sybase公司 4、SQL Server数据库  Microsoft公司
  • 关系数据库与非关系数据库Nosql区别汇总

    千次阅读 多人点赞 2018-08-24 11:14:06
    关系数据库与非关系数据库详细比较 关系数据库与非关系数据库优缺点对比 关于Nosql 1.Nosql 2.Nosql特点: 3.Nosql主要主流产品 4.Nosql数据库四大分类: 关系数据库与非关系数据库详细比较 1....
  • 关系数据库还是NoSQL数据库

    千次阅读 2013-06-01 20:52:33
    上一篇简单的说明了为...因为成熟稳定的关系数据库产品并不是很多,而供你选择的免费版本就更加少了,所以互联网领域基本上都选择了免费的MySQL数据库。在高速发展的WEB2.0时代,我们发现关系数据库在性能、扩展性、
  • 关系数据库与非关系数据库详细比较

    千次阅读 多人点赞 2018-11-12 11:06:02
    关系数据库与非关系数据库详细比较 1.关系数据库通过外键关联来建立表与表之间的关系, 2.非关系数据库通常指数据以对象的形式存储在数据库中,而对象之间的关系通过每个对象自身的属性来...
  • 关系型数据库和Nosql区别 也许人迷惑关系型数据库和非关系型数据库区别,其实非关系...1. 本质:非关系型数据库的实质:非关系数据库产品是传统关系型数据库的功能阉割版本,通过减少用不到或很少用的功能,来...
  • 关系数据库,是建立在关系模型基础上的数据库,其借助于集合代数等数学概念和方法来处理数据库中的数据。主流的oracle、DB2、MS SQL Server和mysql都属于这类传统数据库。NoSQL数据库,全称为Not Only SQL,意思...
  • 目前数据库有哪些

    千次阅读 2014-04-27 11:19:54
     作为关系数据库领域的开拓者和领航人,IBM在1977年完成了System R系统的原型,1980年开始提供集成的数据库服务器—— System/38,随后是SQL/DSforVSE和VM,其初始版本与SystemR研究原型密切相关。DB2 forMVSV1...
  • 关系数据库选型

    千次阅读 2018-07-03 23:15:44
    为此,需独具慧眼,谨慎而全面地对比每家厂商技术的优缺点,通过衡量自身需求,正确地进行评估与选型,才能选中适合的数据库产品。1 选型因素我们的目标是选择最合适的数据库产品,通常从主流性、性能、可靠性、扩展...
  • 常用数据库有哪些

    千次阅读 2019-09-20 09:09:28
    表 1 所示列出了每一类数据库的前 3~5 名,排名会不断变化,实时的排名参见... 关系数据库 Oracle、MySQL/MariaDB、SQL Server、PostgrcSQL、 DB2 遵循“表一记录”模型。按行存...
  • 关系数据库2. 非关系型数据库(NoSQL)数据库模型数据库的架构数据库索引数据库操作:事务 数据库介绍 数据库,简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、查询、更新...
  • 很多情况下,用户会将实时数据库与关系数据库混为一谈,实际上,这两类产品的设计理念及应用场合是完全不同的。 内存数据库就是将数据放在内存中直接操作的数据库,它利用内存的读写速度比磁盘快、内存是随机访问而...
  • 关系数据库到非关系数据库

    万次阅读 2017-10-22 22:33:59
    关系数据库 关系数据库,是指采用了关系模型来组织数据的数据库关系模型是在1970年由IBM的研究员E.F.Codd博士首先提出的,在之后的几十年中,关系模型的概念得到了充分的发展并逐渐成为主流数据库结构的主流...
  • 1. 关系数据库 关系数据库,是指采用了关系模型来组织数据的数据库关系模型是在1970年由IBM的研究员E.F.Codd博士首先提出的,在之后的几十年中,关系模型的概念得到了充分的发展并逐渐成为主流数据库...
  • 常见的非关系数据库(nosql数据库)

    千次阅读 2017-07-11 15:27:00
    常见的非关系数据库(nosql数据库)
  • 关系数据库与NoSQL数据库简述

    千次阅读 2017-09-21 16:10:44
    一、 关系数据库   简单定义,关系模型指的就是二维表格模型,而一个关系数据库就是由二维表及其之间的联系所组成的一个数据组织。关系模型中常用的概念: 关系:可以理解为一张二维表,每个关系都具有...
  • 1. 关系数据库  关系型数据库模型是把复杂的数据结构归结为简单的二元关系(即二维表格形式)。 2. 非关系数据库  非关系型数据库也被称为NoSQL数据库,NOSQL的本意是”Not Olnly SQL”。指的是非关系型数据库...
  • 关系数据库系统与面向对象数据库系统各自的优缺点 关系数据库系统的优点 a.灵活性和建库的简单性:目前在多数RDDMS产品中使用标准查询语言SQL,允许用户几乎毫无差别地从一个产品到另一个产品存取信息。 b....
  • 数据库种类及关系数据库原理

    千次阅读 2017-09-14 08:02:25
    一、数据库种类及关系数据库原理1.1数据库种类:按照早期的数据库理论,比较流行的数据库模型三种: 层次式数据库 网络式数据库 关系数据库 在当今互联网中,最常用的数据库模型: 关系数据库关系型...
  • 关系数据库与非关系数据库 关系模型指的是采用二维表格来存储数据的模型,而关系数据库由二维表及其之间的联系组成的一个数据组织。常见的由mysql sqlserver 关系数据库的优点: 容易理解:二维表...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 285,710
精华内容 114,284
关键字:

关系数据库产品有哪些