精华内容
下载资源
问答
  • 关系数据库与关系数据库的区别

    万次阅读 2018-11-01 20:50:59
    nosql和关系数据库比较? 优点: 1)成本:nosql数据库简单易部署,基本都是开源软件,不需要像使用oracle那样花费大量成本购买使用,相比关系数据库价格便宜。 2)查询速度:nosql数据库将数...

    当前主流的关系型数据库Oracle、DB2、Microsoft SQL Server、Microsoft Access、MySQL等。

    非关系型数据库有 NoSql、Cloudant。

    nosql和关系型数据库比较?
    优点:
    1)成本:nosql数据库简单易部署,基本都是开源软件,不需要像使用oracle那样花费大量成本购买使用,相比关系型数据库价格便宜。
    2)查询速度:nosql数据库将数据存储于缓存之中,关系型数据库将数据存储在硬盘中,自然查询速度远不及nosql数据库。
    3)存储数据的格式:nosql的存储格式是key,value形式、文档形式、图片形式等等,所以可以存储基础类型以及对象或者是集合等各种格式,而数据库则只支持基础类型。
    4)扩展性:关系型数据库有类似join这样的多表查询机制的限制导致扩展很艰难。
    缺点:
    1)维护的工具和资料有限,因为nosql是属于新的技术,不能和关系型数据库10几年的技术同日而语。
    2)不提供对sql的支持,如果不支持sql这样的工业标准,将产生一定用户的学习和使用成本。

    3)不提供关系型数据库对事物的处理。


    非关系型数据库的优势:1. 性能NOSQL是基于键值对的,可以想象成表中的主键和值的对应关系,而且不需要经过SQL层的解析,所以性能非常高。2. 可扩展性同样也是因为基于键值对,数据之间没有耦合性,所以非常容易水平扩展。

    关系型数据库的优势:1. 复杂查询可以用SQL语句方便的在一个表以及多个表之间做非常复杂的数据查询。2. 事务支持使得对于安全性能很高的数据访问要求得以实现。对于这两类数据库,对方的优势就是自己的弱势,反之亦然。




    关系型数据库把所有的数据都通过行和列的二元表现形式表示出来。

     

    关系型数据库的优势:

    1. 保持数据的一致性(事务处理)

    2.由于以标准化为前提,数据更新的开销很小(相同的字段基本上都只有一处)

    3. 可以进行Join等复杂查询

    其中能够保持数据的一致性是关系型数据库的最大优势。

     

    关系型数据库的不足:

    不擅长的处理

    1. 大量数据的写入处理

    2. 为有数据更新的表做索引或表结构(schema)变更

    3. 字段不固定时应用

    4. 对简单查询需要快速返回结果的处理

    --大量数据的写入处理

    读写集中在一个数据库上让数据库不堪重负,大部分网站已使用主从复制技术实现读写分离,以提高读写性能和读库的可扩展性。

    所以在进行大量数据操作时,会使用数据库主从模式。数据的写入由主数据库负责,数据的读入由从数据库负责,可以比较简单地通过增加从数据库来实现规模化,但是数据的写入却完全没有简单的方法来解决规模化问题。

    第一,要想将数据的写入规模化,可以考虑把主数据库从一台增加到两台,作为互相关联复制的二元主数据库使用,确实这样可以把每台主数据库的负荷减少一半,但是更新处理会发生冲突,可能会造成数据的不一致,为了避免这样的问题,需要把对每个表的请求分别分配给合适的主数据库来处理。

    第二,可以考虑把数据库分割开来,分别放在不同的数据库服务器上,比如将不同的表放在不同的数据库服务器上,数据库分割可以减少每台数据库服务器上的数据量,以便减少硬盘IO的输入、输出处理,实现内存上的高速处理。但是由于分别存储字不同服务器上的表之间无法进行Join处理,数据库分割的时候就需要预先考虑这些问题,数据库分割之后,如果一定要进行Join处理,就必须要在程序中进行关联,这是非常困难的。

     

     

    --为有数据更新的表做索引或表结构变更

    在使用关系型数据库时,为了加快查询速度需要创建索引,为了增加必要的字段就一定要改变表结构,为了进行这些处理,需要对表进行共享锁定,这期间数据变更、更新、插入、删除等都是无法进行的。如果需要进行一些耗时操作,例如为数据量比较大的表创建索引或是变更其表结构,就需要特别注意,长时间内数据可能无法进行更新。

     

    --字段不固定时的应用

    如果字段不固定,利用关系型数据库也是比较困难的,有人会说,需要的时候加个字段就可以了,这样的方法也不是不可以,但在实际运用中每次都进行反复的表结构变更是非常痛苦的。你也可以预先设定大量的预备字段,但这样的话,时间一长很容易弄不清除字段和数据的对应状态,即哪个字段保存有哪些数据。

    --对简单查询需要快速返回结果的处理  (这里的“简单”指的是没有复杂的查询条件)

    这一点称不上是缺点,但不管怎样,关系型数据库并不擅长对简单的查询快速返回结果,因为关系型数据库是使用专门的sql语言进行数据读取的,它需要对sql与越南进行解析,同时还有对表的锁定和解锁等这样的额外开销,这里并不是说关系型数据库的速度太慢,而只是想告诉大家若希望对简单查询进行高速处理,则没有必要非使用关系型数据库不可。

    ---------------------------

    NoSQL数据库

    关系型数据库应用广泛,能进行事务处理和表连接等复杂查询。相对地,NoSQL数据库只应用在特定领域,基本上不进行复杂的处理,但它恰恰弥补了之前所列举的关系型数据库的不足之处。

    优点:

     易于数据的分散

    各个数据之间存在关联是关系型数据库得名的主要原因,为了进行join处理,关系型数据库不得不把数据存储在同一个服务器内,这不利于数据的分散,这也是关系型数据库并不擅长大数据量的写入处理的原因。相反NoSQL数据库原本就不支持Join处理,各个数据都是独立设计的,很容易把数据分散在多个服务器上,故减少了每个服务器上的数据量,即使要处理大量数据的写入,也变得更加容易,数据的读入操作当然也同样容易。

     

    典型的NoSQL数据库

    临时性键值存储(memcached、Redis)、永久性键值存储(ROMA、Redis)、面向文档的数据库(MongoDB、CouchDB)、面向列的数据库(Cassandra、HBase)

    一、 键值存储

    它的数据是以键值的形式存储的,虽然它的速度非常快,但基本上只能通过键的完全一致查询获取数据,根据数据的保存方式可以分为临时性、永久性和两者兼具 三种。

    (1)临时性

          所谓临时性就是数据有可能丢失,memcached把所有数据都保存在内存中,这样保存和读取的速度非常快,但是当memcached停止时,数据就不存在了。由于数据保存在内存中,所以无法操作超出内存容量的数据,旧数据会丢失。总结来说:

          。在内存中保存数据

          。可以进行非常快速的保存和读取处理

          。数据有可能丢失

     (2)永久性

           所谓永久性就是数据不会丢失,这里的键值存储是把数据保存在硬盘上,与临时性比起来,由于必然要发生对硬盘的IO操作,所以性能上还是有差距的,但数据不会丢失是它最大的优势。总结来说:

           。在硬盘上保存数据

           。可以进行非常快速的保存和读取处理(但无法与memcached相比)

           。数据不会丢失

    (3) 两者兼备

           Redis属于这种类型。Redis有些特殊,临时性和永久性兼具。Redis首先把数据保存在内存中,在满足特定条件(默认是 15分钟一次以上,5分钟内10个以上,1分钟内10000个以上的键发生变更)的时候将数据写入到硬盘中,这样既确保了内存中数据的处理速度,又可以通过写入硬盘来保证数据的永久性,这种类型的数据库特别适合处理数组类型的数据。总结来说:

           。同时在内存和硬盘上保存数据

           。可以进行非常快速的保存和读取处理

           。保存在硬盘上的数据不会消失(可以恢复)

           。适合于处理数组类型的数据

         

    二、面向文档的数据库

       MongoDB、CouchDB属于这种类型,它们属于NoSQL数据库,但与键值存储相异。

       (1)不定义表结构

         即使不定义表结构,也可以像定义了表结构一样使用,还省去了变更表结构的麻烦。

       (2)可以使用复杂的查询条件 

         跟键值存储不同的是,面向文档的数据库可以通过复杂的查询条件来获取数据,虽然不具备事务处理和Join这些关系型数据库所具有的处理能力,但初次以外的其他处理基本上都能实现。

    三、 面向列的数据库

       Cassandra、HBae、HyperTable属于这种类型,由于近年来数据量出现爆发性增长,这种类型的NoSQL数据库尤其引入注目。

       普通的关系型数据库都是以行为单位来存储数据的,擅长以行为单位的读入处理,比如特定条件数据的获取。因此,关系型数据库也被成为面向行的数据库。相反,面向列的数据库是以列为单位来存储数据的,擅长以列为单位读入数据。

    面向列的数据库具有搞扩展性,即使数据增加也不会降低相应的处理速度(特别是写入速度),所以它主要应用于需要处理大量数据的情况。另外,把它作为批处理程序的存储器来对大量数据进行更新也是非常有用的。但由于面向列的数据库跟现行数据库存储的思维方式有很大不同,故应用起来十分困难。

     

    总结:关系型数据库与NoSQL数据库并非对立而是互补的关系,即通常情况下使用关系型数据库,在适合使用NoSQL的时候使用NoSQL数据库,让NoSQL数据库对关系型数据库的不足进行弥补。




    展开全文
  • 一、关系数据库  关系数据库,是指采用了关系模型来组织数据的数据库。  关系模型是在1970年由IBM的研究员E.F.Codd博士首先提出的,在之后的几十年中,关系模型的概念得到了充分的发展并逐渐成为主流数据库...

    一、关系型数据库

        关系型数据库,是指采用了关系模型来组织数据的数据库。
        关系模型是在1970年由IBM的研究员E.F.Codd博士首先提出的,在之后的几十年中,关系模型的概念得到了充分的发展并逐渐成为主流数据库结构的主流模型。
        简单来说,关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织。
    关系模型中常用的概念:
        关系
    :可以理解为一张二维表,每个关系都具有一个关系名,就是通常说的表名
        元组:可以理解为二维表中的一行,在数据库中经常被称为记录
        属性:可以理解为二维表中的一列,在数据库中经常被称为字段
        :属性的取值范围,也就是数据库中某一列的取值限制
        关键字:一组可以唯一标识元组的属性,数据库中常称为主键,由一个或多个列组成
        关系模式:指对关系的描述。其格式为:关系名(属性1,属性2, ... ... ,属性N),在数据库中成为表结构

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

    关系型数据库瓶颈
      1).高并发读写需求
        网站的用户并发性非常高,往往达到每秒上万次读写请求,对于传统关系型数据库来说,硬盘I/O是一个很大的瓶颈
      2).海量数据的高效率读写
        网站每天产生的数据量是巨大的,对于关系型数据库来说,在一张包含海量数据的表中查询,效率是非常低的
      3).高扩展性和可用性
        在基于web的结构当中,数据库是最难进行横向扩展的,当一个应用系统的用户量和访问量与日俱增的时候,数据库却没有办法像web server和app server那样简单的通过添加更多的硬件和服务节点来扩展性能和负载能力。对于很多需要提供24小时不间断服务的网站来说,对数据库系统进行升级和扩展是非常痛苦的事情,往往需要停机维护和数据迁移。

    对网站来说,关系型数据库的很多特性不再需要了
      事务一致性: 关系型数据库在对事物一致性的维护中有很大的开销,而现在很多web2.0系统对事物的读写一致性都不高
      读写实时性: 对关系数据库来说,插入一条数据之后立刻查询,是肯定可以读出这条数据的,但是对于很多web应用来说,并不要求这么高的实时性,比如发一条消息之后,过几秒乃至十几秒之后才看到这条动态是完全可以接受的
      复杂SQL,特别是多表关联查询: 任何大数据量的web系统,都非常忌讳多个大表的关联查询,以及复杂的数据分析类型的复杂SQL报表查询,特别是SNS类型的网站(SNS,专指社交网络服务,包括了社交软件和社交网站。),从需求以及产品阶级角度,就避免了这种情况的产生。往往更多的只是单表的主键查询,以及单表的简单条件分页查询,SQL的功能极大的弱化了

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

    二、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数据库显的更为合适。

    2-1.非关系型数据库分类
        由于非关系型数据库本身天然的多样性,以及出现的时间较短,因此,不想关系型数据库,有几种数据库能够一统江山,非关系型数据库非常多,并且大部分都是开源的。
        这些数据库中,其实实现大部分都比较简单,除了一些共性外,很大一部分都是针对某些特定的应用需求出现的,因此,对于该类应用,具有极高的性能。依据结构化方法以及应用场合的不同,主要分为以下几类:
        1).面向高性能并发读写的key-value数据库:key-value数据库的主要特点即使具有极高的并发读写性能,Redis,Tokyo Cabinet,Flare就是这类的代表
        2).面向海量数据访问的面向文档数据库:这类数据库的特点是,可以在海量的数据中快速的查询数据,典型代表为MongoDB以及CouchDB
        3).面向可扩展性的分布式数据库:这类数据库想解决的问题就是传统数据库存在可扩展性上的缺陷,这类数据库可以适应数据量的增加以及数据结构的变化

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

        关系型数据库的最大特点就是事务的一致性:传统的关系型数据库读写操作都是事务的,具有ACID的特点,这个特性使得关系型数据库可以用于几乎所有对一致性有要求的系统中,如典型的银行系统。
        但是,在网页应用中,尤其是SNS应用中,一致性却不是显得那么重要,用户A看到的内容和用户B看到同一用户C内容更新不一致是可以容忍的,或者说,两个人看到同一好友的数据更新的时间差那么几秒是可以容忍的,因此,关系型数据库的最大特点在这里已经无用武之地,起码不是那么重要了。
        相反地,关系型数据库为了维护一致性所付出的巨大代价就是其读写性能比较差,而像微博、facebook这类SNS的应用,对并发读写能力要求极高,关系型数据库已经无法应付(在读方面,传统上为了克服关系型数据库缺陷,提高性能,都是增加一级memcache来静态化网页,而在SNS中,变化太快,memchache已经无能为力了),因此,必须用新的一种数据结构存储来代替关系数据库。
        关系数据库的另一个特点就是其具有固定的表结构,因此,其扩展性极差,而在SNS中,系统的升级,功能的增加,往往意味着数据结构巨大变动,这一点关系型数据库也难以应付,需要新的结构化数据存储。
        于是,非关系型数据库应运而生,由于不可能用一种数据结构化存储应付所有的新的需求,因此,非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合。

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


    ---------------------------------------------------------------------------------------------------------------------------------------------

    oracle与mysql的区别

    一、并发性
      并发性是数据库最重要的特性,但并发涉及到资源的获取、共享与锁定。
        mysql:mysql以表级锁为主,对资源锁定的粒度很大,如果一个session对一个表加锁时间过长,会让其他session无法更新此表中的数据。虽然InnoDB引擎的表可以用行级锁,但这个行级锁的机制依赖于表的索引,如果表没有索引,或者sql语句没有使用索引,那么仍然使用表级锁。
        oracle:oracle使用行级锁,对资源锁定的粒度要小很多,只是锁定sql需要的资源,并且加锁是在数据库中的数据行上,不依赖与索引。所以oracle对并发性的支持要好很多。

    二、一致性
        oracle:oracle支持serializable的隔离级别,可以实现最高级别的读一致性。每个session提交后其他session才能看到提交的更改。oracle通过在undo表空间中构造多版本数据块来实现读一致性,每个session查询时,如果对应的数据块发生变化,oracle会在undo表空间中为这个session构造它查询时的旧的数据块。
        mysql:mysql没有类似oracle的构造多版本数据块的机制,只支持read commited的隔离级别。一个session读取数据时,其他session不能更改数据,但可以在表最后插入数据。session更新数据时,要加上排它锁,其他session无法访问数据。

    三、事务
        oracle很早就完全支持事务。
        mysql在innodb存储引擎的行级锁的情况下才支持事务。

    四、数据持久性
        oracle:保证提交的数据均可恢复,因为oracle把提交的sql操作线写入了在线联机日志文件中,保持到了磁盘上,如果出现数据库或主机异常重启,重启后oracle可以考联机在线日志恢复客户提交的数据。
        mysql:默认提交sql语句,但如果更新过程中出现db或主机重启的问题,也许会丢失数据。

    五、提交方式
        oracle默认不自动提交,需要用户手动提交。
        mysql默认是自动提交。

    六、逻辑备份
        oracle逻辑备份时不锁定数据,且备份的数据是一致的。
        mysql逻辑备份时要锁定数据,才能保证备份的数据是一致的,影响业务正常的dml使用。

    七、热备份
        oracle有成熟的热备工具rman,热备时,不影响用户使用数据库。即使备份的数据库不一致,也可以在恢复时通过归档日志和联机重做日志进行一致的回复。
        mysql:myisam的引擎,用mysql自带的mysqlhostcopy热备时,需要给表加读锁,影响dml操作。innodb的引擎,它会备份innodb的表和索引,但是不会备份.frm文件。用ibbackup备份时,会有一个日志文件记录备份期间的数据变化,因此可以不用锁表,不影响其他用户使用数据库。但此工具是收费的。innobackup是结合ibbackup使用的一个脚本,他会协助对.frm文件的备份。

    八、sql语句的扩展和灵活性
        mysql对sql语句有很多非常实用而方便的扩展,比如limit功能,insert可以一次插入多行数据,select某些管理数据可以不加from。
        oracle在这方面感觉更加稳重传统一些。

    九、复制
        oracle:既有推或拉式的传统数据复制,也有dataguard的双机或多机容灾机制,主库出现问题是,可以自动切换备库到主库,但配置管理较复杂。
        mysql:复制服务器配置简单,但主库出问题时,丛库有可能丢失一定的数据。且需要手工切换丛库到主库。

    十、性能诊断
        oracle有各种成熟的性能诊断调优工具,能实现很多自动分析、诊断功能。比如awr、addm、sqltrace、tkproof等
        mysql的诊断调优方法较少,主要有慢查询日志。

    十一、权限与安全

        mysql的用户与主机有关,感觉没有什么意义,另外更容易被仿冒主机及ip有可乘之机。
        oracle的权限与安全概念比较传统,中规中矩。

    十二、分区表和分区索引
        oracle的分区表和分区索引功能很成熟,可以提高用户访问db的体验。
        mysql的分区表还不太成熟稳定。

    十三、管理工具

        oracle有多种成熟的命令行、图形界面、web管理工具,还有很多第三方的管理工具,管理极其方便高效。
        mysql管理工具较少,在linux下的管理工具的安装有时要安装额外的包(phpmyadmin, etc),有一定复杂性。








    参考:http://blog.sina.com.cn/s/blog_61e034d50100k6xn.html




    展开全文
  • 服务器日常维护常识之硬件维护 服务器日常维护常识硬件维护1、储存设备的扩充 当资源不断扩展的时候,服务器就需要更多的内存和硬盘容量来储存这些资源。所以,内存和硬盘的扩充是很常见的。增加内存前需要认定...
  • 数据库服务器到底是用机械硬盘还是固态硬盘 答案是:固态硬盘   //1.固态硬盘已经便宜了 //2.做了RAID5,之后有了数据安全保障,不放心的话 就做RAID1,更何况现在都是数据库集群,所以不担心数据丢失的问题了 ...

    数据库服务器到底是用机械硬盘还是固态硬盘

    答案是:固态硬盘
     

    //1.固态硬盘已经便宜了
    
    //2.做了RAID5,之后有了数据安全保障,不放心的话 就做RAID1,更何况现在都是数据库集群,所以不担心数据丢失的问题了
    
    //3.固态硬盘速度真的很快
    
    //4.intel的固态质量还是非常稳定了,就算超过使用寿命,顶多也是不能写入,但是不会丢数据。

     

    所以不要担心,就是干。。。

    大大的提高数据存取效率

    展开全文
  • 关系数据库NOSQL RedisNOSQL介绍关系数据库和关系数据库的区别关系数据库(Mysql Oracle SqlServer)非关系数据库(NOSQL)Redis的介绍使用Redis的好处应用场景Redis使用redis服务器打开redis图形化...

    NOSQL介绍

    (1)什么是NOSQL
    NoSQL(NoSQL = Not Only SQL),意即“不仅仅是SQL”,是一项全新的数据库理念,泛指非关系型的数据库
    NOSQL是非关系型数据库
    Redis: 就是NOSQL 非关系型数据库
    MySql Oracle :关系型数据库

    关系型数据库和非关系型数据库的区别

    关系型数据库(Mysql Oracle SqlServer)

    1:数据是由一张张的表组成,而且这些表与表之间有关系(一对一,一对多,多对多)
    2:数据是存在硬盘上,每次访问时,是将数据从硬盘读取到内存中
    在这里插入图片描述

    非关系型数据库(NOSQL)

    》1: 数据是有一个个的键值对:键 值
    》2:数据是存在内存中,在满足需要的时候,也可以将数据存在硬盘上(Redis的持久化)
    在这里插入图片描述

    Redis的介绍

    Redis(Remote Dictionary Server ) 远程字典服务,是一个非关系型数据库

    使用Redis的好处

    每一次页面加载后都会重新请求数据库来加载,对数据库的压力比较大,而且分类的数据不会经常产生变化,所有可以使用redis来缓存这个数据。
    在这里插入图片描述

    Redis的特点

    高效性:Redis读取的速度是110000次/s,写的速度是81000次/s
    原子性:Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。
    支持多种数据结构:string(字符串);list(列表);hash(哈希),set(集合);zset(有序集合)
    稳定性:持久化,主从复制(集群)
    其他特性:支持过期时间,支持事务,消息订阅。

    应用场景

    Redis一般用来存储经常访问的,但有不经常改变的数据
    配合关系型数据库做高速缓存
    在这里插入图片描述
    由于其拥有持久化能力,利用其多样的数据结构存储特定的数据
    在这里插入图片描述

    Redis不适用场景

    1 ) 需要事务支持
    2 ) 基于sql的结构化查询存储,处理复杂的关系,需要即席查询(用户自定义查询条件的查询)

    Redis使用

    虽然 访问redis 较快,但是第一次是没有数据的
    访问service,获取json,将json保存到redis

    redis服务器

    打开start.bat,打开服务器
    在这里插入图片描述

    打开redis图形化工具

    在这里插入图片描述

    JedisUtil工具读写数据

    package com.wzx.lvyou.util;
    
    import redis.clients.jedis.Jedis;
    import redis.clients.jedis.JedisPool;
    import redis.clients.jedis.JedisPoolConfig;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.Properties;
    
    /**
     * Jedis工具类
     */
    public final class JedisUtil {
        private static JedisPool jedisPool;
    
        static {
            //读取配置文件
            InputStream is = JedisPool.class.getClassLoader().getResourceAsStream("jedis.properties");
            //创建Properties对象
            Properties pro = new Properties();
            //关联文件
            try {
                pro.load(is);
            } catch (IOException e) {
                e.printStackTrace();
            }
            //获取数据,设置到JedisPoolConfig中
            JedisPoolConfig config = new JedisPoolConfig();
            config.setMaxTotal(Integer.parseInt(pro.getProperty("maxTotal")));
            config.setMaxIdle(Integer.parseInt(pro.getProperty("maxIdle")));
    
            //初始化JedisPool  创建redis连接池
            jedisPool = new JedisPool(config, pro.getProperty("host"), Integer.parseInt(pro.getProperty("port")));
    
    
        }
    
    
        /**
         * 获取连接方法
         */
        public static Jedis getJedis() {
       // 获取redis对象
            return jedisPool.getResource();
        }
    
        /**
         * 关闭Jedis
         */
        public static void close(Jedis jedis) {
            if (jedis != null) {
                jedis.close();
            }
        }
    }
    
    

    jedis.properties

    host=192.168.21.101
    port=6379
    maxTotal=100  //最大连接数
    maxIdle=10    //最大空闲数
    

    CategoryServlet使用redis

        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
          
            //访问service,获取json,将json保存到redis
            Jedis jedis = JedisUtil.getJedis();
            String json = jedis.get("category_list");
    
            if (json != null) {
                System.out.println("redis cache");
                response.getWriter().println(json);
    
            } else {   //访问redis 较快,但是第一次是没有数据的,所以访问数据库
                System.out.println("mysql data");
                //创建业务对象
                CategoryService categoryService = new CategoryService();
                //所有的分类
                List<Category> categoryList=categoryService.findAll();
                //显示
                ResponseInfo info = new ResponseInfo();
                info.setCode(200);
                info.setData(categoryList);
                json = new ObjectMapper().writeValueAsString(info);
                //将数据保存到redis
                jedis.set("category_list",json);
                response.getWriter().println(json);
            }
            //关闭连接
            JedisUtil.close(jedis);
    
        }
    
    展开全文
  • 关系数据库和关系型区别

    千次阅读 2019-04-02 11:41:42
    关系数据库和关系型区别 当前主流的关系数据库: Oracle、DB2、Microsoft SQL Server、Microsoft Access、MySQL等。 非关系数据库: NoSql、Cloudant。 临时性键值存储(memcached、Redis)、永久性...
  • 目录: 1.什么是数据库 2.数据库的种类 3.数据库的存储方式 4.关系数据库的优缺点及使用场景 ...数据库根据其数据的存储方式可以分为关系数据库和关系数据库。常见的关系数据库有Oracle、D...
  • 在传统的web开发中,只需要使用apache服务器和关系数据库就能很好的满足我们的需要,但是当用户数目增加时,当数据量增大时,服务器和关系数据库就会遭到性能的瓶颈。本文将浅要谈谈高并发海量数据环境下的服务器和...
  • 文章目录一、关系数据库与关系数据库概述1、关系数据库2、非关系数据库二、关系数据库与关系数据库区别1、数据存储方式不同2、扩展方式不同3、对事务性的支持不同三、非关系数据库产生背景四、Redis...
  • 关系数据库与关系数据库

    万次阅读 2018-04-18 15:45:07
    当前主流的关系数据库有Oracle、DB2、Microsoft SQL Server、... 性能NoSQL是基于键值对的,可以想象成表中的主键值的对应关系,而且不需要经过SQL层的解析,所以性能非常高。 2. 可扩展性同样也是因为基...
  • 一、关系数据库 &nbsp;&nbsp;&nbsp; 关系数据库,是指采用了关系模型来组织数据的数据库。 &nbsp;&nbsp;&nbsp; 关系模型是在1970年由IBM的研究员E.F.Codd博士首先提出的,在之后的几...
  • 一、关系数据库 关系数据库最典型的数据结构是表,由二维表...3、高并发读写需求,传统关系数据库来说,硬盘I/O是一个很大的瓶颈。 二、非关系数据库关系数据库严格上不是一种数据库,应..
  • 关系数据库与NOSQL数据库的区别

    千次阅读 2014-01-02 11:12:24
    关系数据库与NOSQL数据库的区别
  • 初次接触嵌入式数据库(Embedded Database)可能对这个概念总不是很清楚,它究竟与数据库服务器(Database Server)有什么区别,它们又分别适用于那些应用场景呢,这是需要解决的问题。 在谈区别之前,先来个感性...
  • 数据库备份时只能备份到本地硬盘上,如果数据库和Web服务器不在同一台服务器上,那么通过Web站点下载数据库服务器上的数据库备份比较麻烦,我们后面再介绍如何解决不在同一台服务器上的情况。 2.
  • 当前主流的关系数据库有Oracle、DB2、Microsoft SQL Server、Microsoft Access、MySQL等。 非关系数据库有 NoSql、Cloudant。   ==========================优缺点分析...nosql和关系数据库比较? 优点...
  • 初次接触嵌入式数据库(Embedded Database)可能对这个概念总不是很清楚,它究竟与数据库服务器(Database Server)有什么区别,它们又分别适用于那些应用场景呢,这是需要解决的问题。 在谈区别之前,先来个感性...
  • 关系数据库: Oracle SQLServer Sybase Informix Access DB2 mysql vfp Ingers FoxPro 非关系数据库: MongoDB Cassandra CouchDB Hypertable Redis Riak Neo4j Hadoop HBase Couchbase MemcacheDB REVENDB ...
  • 关系数据库与分布式数据库

    万次阅读 2018-01-28 10:27:48
    关系数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念方法来处理数据库中的数据。 关系模型由关系数据结构、关系操作集合、关系完整性约束三部分组成。 关系数据库将数据存储在硬盘中 ...
  • ![图片说明](https://img-ask.csdn.net/upload/201609/15/1473942324_714928.jpg) ![图片说明](https://img-ask.csdn.net/upload/201609/15/1473942336_564180.jpg) 这些服务器用来干什么的?怎么用?求解释一下
  • 关系数据库与NoSQL数据库场景说明

    千次阅读 2016-05-19 15:24:02
    一个程序员很有必要熟悉或者精通一种数据库,MySQL无疑是首选。为什么使用MySQL呢,因为它是开源的,同时具备轻量、简单、稳定高性能等...关系数据库把所有的数据都通过行列的二元表现形式表示出来。它的优势:
  • redis非关系数据库详解

    万次阅读 2021-02-26 17:03:34
    Redis 是以key-value形式存储,传统的关系数据库不一样。不一定遵循传统数据库的一些基本要求,比如说,不遵循sql标准,事务,表结构等等,redis严格上不是一种数据库,应该是一种数据结构化存储方法的集合。 ...
  • 关系关系数据库的区别?

    千次阅读 2018-05-07 16:04:03
    nosql和关系数据库比较?优点:1)成本:nosql数据库简单易部署,基本都是开源软件,不需要像使用oracle那样花费大量成本购买使用,相比关系数据库价格便宜。2)查询速度:nosql数据库将数据存储于缓存之...
  • 关系数据库和NoSQL数据库

    千次阅读 2013-09-22 17:13:32
    什么是NoSQL 大家有没有听说过“NoSQL”呢...它的意义是:适用关系数据库的时候就使用关系数据库,不适用的时候也没有必要非使用关系数据库不可,可以考虑使用更加合适的数据存储。  为弥补关系数据库的不
  • 数据库是存储数据的仓库,就像我们的硬盘数据库管理系统是管理控制数据库的软件,就像管理硬盘的 ...数据库服务器是运行数据库管理系统,对数据库实施管理控制的机器,就像我们安装window系统管理硬盘存储数据
  • 关系关系数据库的区别

    千次阅读 2018-11-19 16:57:56
    当前主流的关系数据库有Oracle、DB2、Microsoft SQL Server、Microsoft Access、MySQL等。 非关系数据库有 NoSql、Cloudant。...nosql和关系数据库比较? 优点: 1)成本:nosql数据库简单易部...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 177,707
精华内容 71,082
关键字:

服务器与数据库和硬盘的关系