精华内容
下载资源
问答
  • 内存数据库

    千次阅读 2014-05-07 08:19:25
    内存数据库,顾名思义就是将数据放在内存直接操作的数据库。相对于磁盘,内存的数据读写速度要高出几个数量级,将数据保存在内存相比从磁盘上访问能够极大地提高应用的性能。同时,内存数据库抛弃了磁盘数据管理...

            内存数据库,顾名思义就是将数据放在内存中直接操作的数据库。相对于磁盘,内存的数据读写速度要高出几个数量级,将数据保存在内存中相比从磁盘上访问能够极大地提高应用的性能。同时,内存数据库抛弃了磁盘数据管理的传统方式,基于全部数据都在内存中重新设计了体系结构,并且在数据缓存、快速算法、并行操作方面也进行了相应的改进,所以数据处理速度比传统数据库的数据处理速度要快很多,一般都在10倍以上。内存数据库的最大特点是其“主拷贝”或“工作版本”常驻内存,即活动事务只与实时内存数据库的内存拷贝打交道。

    内存数据库与传统数据库的异同

            传统的数据库系统是关系型数据库,开发这种数据库的目的,是处理永久、稳定的数据。关系数据库强调维护数据的完整性、一致性,但很难顾及有关数据及其处理的定时限制,不能满足工业生产管理实时应用的需要,因为实时事务要求系统能较准确地预报事务的运行时间。

            对磁盘数据库而言,由于磁盘存取、内外存的数据传递、缓冲区管理、排队等待及锁的延迟等使得事务实际平均执行时间与估算的最坏情况执行时间相差很大,如果将整个数据库或其主要的“工作”部分放入内存,使每个事务在执行过程中没有I/O,则为系统较准确估算和安排事务的运行时间,使之具有较好的动态可预报性提供了有力的支持,同时也为实现事务的定时限制打下了基础。这就是内存数据库出现的主要原因。

           内存数据库所处理的数据通常是“短暂”的,即有一定的有效时间,过时则有新的数据产生,而当前的决策推导变成无效。所以,实际应用中采用内存数据库来处理实时性强的业务逻辑处理数据。而传统数据库旨在处理永久、稳定的数据,其性能目标是高的系统吞吐量和低的代价,处理数据的实时性就要考虑的相对少一些。实际应用中利用传统数据库这一特性存放相对实时性要求不高的数据。

    在实际应用中这两种数据库常常结合使用,而不是以内存数据库替代传统数据库。

    常见内存数据库

    SQLite

    SQLite是一个开源内存数据库,实现了独立的,可嵌入的,零配置的SQL数据库引擎。

    http://www.sqlite.com.cn/ 

    Oracle TimesTen内存数据库

    Oracle TimesTen是一个全新设计的内存数据库。它使用基于行的关系模型(表、列、数据类型、索引等)实现数据存储,并使用SQL作为访问语言。它提供了许多API,并且支持Oracle PL/SQL。应用程序的访问方式与其他关系数据库完全相同。

    http://download.csdn.net/detail/xunzaosiyecao/7307121l 

    IBM SolidDB 

    IBM solidDB 可以提供每秒数万至数十万事务的吞吐率,并且始终可以获得微秒级的响应时间(或延时)。

    http://www-01.ibm.com/software/data/soliddb/ 

    SAP-HANA

    http://help.sap.com/hana/ 

    Sqlserver 2014 Hekaton内存数据库引擎

    http://www.cnblogs.com/CareySon/p/3155753.html 

    其他参考资料:

    http://www.searchdatabase.com.cn/guide/imdb.htm 
    http://hemeicun.blog.163.com/blog/static/11157304820113645525209/ 

    展开全文
  • Ignite内存关系数据库

    千次阅读 2019-04-20 14:31:37
    Ignite关系型数据库特性...基于内存查询:可以把热点数据抽取到ignite,实现基于内存的查询,这样避免redis对查询key的组合带来的内存浪费 ignite支持key,value键值对查询, ignite支持原生JAVA api,sql语法查询 ...

    Ignite关系型数据库特性

    1. 执行sql语法,可以像使用Oracle数据或者其他数据库一样使用Ignite,可以在sql兼容的情况下,不改写mybatis语法,而切换数据源
    2. 基于内存查询:可以把热点数据抽取到ignite中,实现基于内存的查询,这样避免redis对查询key的组合带来的内存浪费
    3. ignite支持key,value键值对查询,
    4. ignite支持原生JAVA api,sql语法查询

    ignite学习地址

    ignite 中文社区地址 https://liyuj.gitee.io/ 博主在开源中国上有博客
    ignite 下载地址 https://ignite.apache.org/download.cgi
    下载下来后,里面有类似jdk这样的demo示例,有英文API,可以学习
    上手比较简单,想要使用好比较难

    展开全文
  • 在Spring Boot使用内存数据库

    万次阅读 2020-03-01 08:38:39
    所谓内存数据库就是可以在内存运行的数据库,不需要将数据存储在文件系统,但是相对于普通的数据库而言,内存数据库因为数据都在内存,所以内存的数据库的存取速度会更快。 本文我们将会讨论如何在Spring Boot...


    在Spring Boot中使用内存数据库

    所谓内存数据库就是可以在内存中运行的数据库,不需要将数据存储在文件系统中,但是相对于普通的数据库而言,内存数据库因为数据都在内存中,所以内存的数据库的存取速度会更快。

    本文我们将会讨论如何在Spring Boot中使用内存数据库。

    H2数据库

    H2是一个由java实现的开源内存数据库,它可以支持内存模式和独立模式。 如果要使用H2数据库,需要添加如下依赖:

    <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
        <version>1.4.194</version>
    </dependency>
    

    我们可以在配置文件中设置更多的H2数据库的连接信息:

    driverClassName=org.h2.Driver
    url=jdbc:h2:mem:myDb;DB_CLOSE_DELAY=-1
    username=sa
    password=sa
    

    默认情况下H2数据库当没有连接的时候会自动关闭,我们可以通过添加DB_CLOSE_DELAY=-1来禁止掉这个功能。

    如果我们需要使用Hibernate, 我们需要设置如下内容:

    hibernate.dialect=org.hibernate.dialect.H2Dialect
    

    HSQLDB

    HSQLDB是一个开源项目,java写的关系型数据库。它可以支持基本的SQL操作,存储过程和触发器。同样嵌入式或者单独使用。

    我们看下怎么添加依赖:

    <dependency>
        <groupId>org.hsqldb</groupId>
        <artifactId>hsqldb</artifactId>
        <version>2.3.4</version>
    </dependency>
    

    下面是HSQLDB的配置文件:

    driverClassName=org.hsqldb.jdbc.JDBCDriver
    url=jdbc:hsqldb:mem:myDb
    username=sa
    password=sa
    

    同样的如果使用hibernate需要配置如下属性:

    hibernate.dialect=org.hibernate.dialect.HSQLDialect
    

    Apache Derby

    Apache Derby 是由Apache基金会维护的开源项目。

    添加依赖:

    <dependency>
        <groupId>org.apache.derby</groupId>
        <artifactId>derby</artifactId>
        <version>10.13.1.1</version>
    </dependency>
    

    配置文件:

    driverClassName=org.apache.derby.jdbc.EmbeddedDriver
    url=jdbc:derby:memory:myDb;create=true
    username=sa
    password=sa
    

    对应的hibernate配置:

    hibernate.dialect=org.hibernate.dialect.DerbyDialect
    

    SQLite

    SQLite也是一种内存数据库,我们这样添加依赖:

    <dependency>
        <groupId>org.xerial</groupId>
        <artifactId>sqlite-jdbc</artifactId>
        <version>3.16.1</version>
    </dependency>
    

    配置文件如下:

    driverClassName=org.sqlite.JDBC
    url=jdbc:sqlite:memory:myDb
    username=sa
    password=sa
    

    使用Spring Boot可以很方便的使用上面提到的内存数据库。

    更多精彩内容且看:

    更多教程请参考 flydean的博客

    展开全文
  • 内存数据库 传统的数据库管理系统把所有数据都放在磁盘上进行管理,所以称作磁盘数据库(DRDB: Disk-Resident Database).磁盘数据库因为磁头机械运动及系统调用因素导致速度降低,后来逐渐增加内存作用,有两种技术:...
    • 内存数据库

      传统的数据库管理系统把所有数据都放在磁盘上进行管理,所以称作磁盘数据库(DRDB: Disk-Resident Database).磁盘数据库因为磁头机械运动及系统调用因素导致速度降低,后来逐渐增加内存作用,有两种技术:共享内存技术、内存数据库。

      内存数据库(Main Memory Database),又称为主存数据库,按历史发展分成三个阶段1

      1. 雏形期(20世纪60年代末-80年代初)

        1969年,IBM开发出最早的数据库管理系统:基于层次模型的数据库管理系统IMS。同时,基于内存的数据管理,退出了IMS/VS Fast Path,同时支持内存驻留和磁盘驻留数据。

        与此同时,网状数据库、关系数据库等各种数据库技术逐渐成型。

      2. 技术理论成熟期(1984)

        1984年,D.J.DeWitt发表《主存数据库系统的实现技术》一文,首次提出主存数据库(Main Memory Database)概念,提出AVL树、哈希算法、主存数据库恢复机制等主存数据库技术的关键理论,为主存数据库的发展指出了明确的方向。

        1985年,IBM退出在IBM370上运行的OBE主存数据库;

        1986年,RB.Hagman提出使用检查点技术实现主存数据库的恢复机制,威斯康星大学提出了按区双向锁定模式解决主存数据库中的并发控制问题。并设计出MM-DBMS主存数据库。贝尔实验室退出DALI主存数据库模型。

        1987年,ACM SIGMOD会议中提出了以堆文件(HE AP FILE)作为主存数据库的数据存储结构。Southern Methodist大学设计出MARS主存数据库模型。

        1988年,普林斯顿大学设计出TPK主存数据库;

        1990年普林斯顿大学设计出System M主存数据库。

      3. 产品发展期和市场成长期

        随着互联网发展、内存硬件、半导体技术发展,使得主存数据库的技术可行性逐渐成熟。

        1994年,美国OSE公司推出第一个商业化的、可时机使用的主存数据库产品Polyhedra;

        1998年,德国Software AG推出Tamino Database;

        1999年,日本UBIT会社开发出XDB主存数据库;韩国Altibase推出Altibase;

        2000年,奥地利的Quilogic公司推出SQL-IMDB;

        2001年,美国的McObject推出eXtremeDB;加拿大Empress公司推出Express DB;

    • 常见的内存数据库类型2

      1. 关系型内存数据库
      2. 键值对内存数据库
      3. 传统数据库的内存数据库引擎
    • 常见的内存数据库

      1. eXtremeDB

        eXtremeDB是McObject公司的一款特别为实时与嵌入式系统数据管理而设计的数据库,只有50k到130k的开销,速度为微秒级。

        eXtreme DB完全驻留在主内存中,不使用文件系统,讲内存扩展到磁盘,把磁盘当作虚拟内存来用,数据管理量在32位下能达到20G。

      2. Oracle TimesTen

        Oracle TimesTen是Oracle从TimesTen公司收购的一个内存优化的关系数据库。

        Oracle还有一款Oracle Berkeley DB

      3. SolidDB

        Solid数据管理平台将基于内存和磁盘的全事务处理数据库引擎、载体级高可用性及强大的数据复制功能为一体。

      4. Altibase

        适用于通信、网上银行、证券交易、实时应用、嵌入式系统领域。

        目前占据80%以上内存数据库市场。

      5. SQLite

        SQLite是一个小型的C程序库,实现了独立的、可嵌入的、零配置的SQL数据库引擎。

    • 磁盘上的数据库

      磁盘数据库与内存数据库对应,是一种将数据存储在磁盘上的数据管理系统。核心知识在于数据的物理读写过程34

    • 分布式文件系统上的数据库

    • 分布式数据库(Distributed Data Base)5

      分布式数据库系统通常使用较小的计算机系统,每台计算机可单独放在一个地方,每台计算机中都可能有DBMS的一份完整拷贝副本,或者部分拷贝副本,并且具有自己局部的数据库,位于不同地点的许多计算机通过网络互相连接,共同组成一个完整的、全局的逻辑上集中、物理上分布的大型数据库。

    • 分布式数据库简史

      始于20世纪70年代中期;

      1979年,美国CCA在DEC计算机上实现第一个分布式数据库系统SDD-1;

      20世纪90年代,分布式数据库系统普遍进入商品化应用阶段。

    • 分布式数据库系统(Distributed Database System)6

      分布式数据库系统(DDBS)包含:分布式数据库管理系统(DDBMS)和分布式数据库(DDB)。

    • 分布式数据库系统的分类7

      1. 同构同质型DDBS

        各个场地都采用同一类型的数据模型(譬如都是关系型),并且是同一型号的DBMS

      2. 同构异质型DDBS

        各个场地采用同一类型的数据模型,但是DBMS的型号不同,譬如DB2、Oracle、Sybase、SQL Server

      3. 异构型DDBS

        各个场地的数据模型的型号不同,甚至类型也不同。

    • References


    1. 常用内存数据库介绍 ↩︎

    2. 内存数据库技术选型 ↩︎

    3. 0. 磁盘读写与数据库的关系 ↩︎

    4. 深入理解数据库磁盘存储(Disk Storage) ↩︎

    5. 百度百科:分布式数据库 ↩︎

    6. 百度百科:分布式数据库系统 ↩︎

    7. 分布式数据库概述 ↩︎

    展开全文
  • 实时数据库,内存数据库,关系型数据库比较

    万次阅读 多人点赞 2018-09-26 18:55:10
    内存数据库就是将数据放在内存直接操作的数据库,它利用内存的读写速度比磁盘快、内存是随机访问而磁盘是顺序访问这两个特点,将数据保存在内存,在内存模仿建立表结构和索引结构并针对内存特性进行优化,相比...
  • 内存测试数据库

    千次阅读 2006-07-23 17:53:00
    内存数据库常作为嵌入式数据库:当一个进程启动时被创建,嵌入到这个进程运行,当进程终止时被销毁。 尽管大家一般都认为数据库应该是个以硬盘为中心的庞大部件,实际上还存在一个狭小而热闹的内存数据库世界。...
  • 由于sqlite对多进程操作支持效果不太理想,在项目中,为了避免频繁读写 文件数据库带来的性能损耗,我们可以采用操作...3、在内存数据库中attach文件数据库,这样可以保证文件数据库中的内容在内存数据库中可见; 4、
  • 内存数据库、关系型数据库和非关系型数据库 一、内存数据库、关系型数据库和非关系型数据库 1.个人观点: 二、内存数据库(Redis,MongoDb,SQLite,Oracle等): 三、Raft分布式协议: 四、Redis出现宕机,...
  • Android 内存数据库

    千次阅读 2013-07-31 20:44:57
    在android数据库通常以文件的形式存储在磁盘,而内存数据库是将数据驻留在内存,因此可以作为一种缓存技术方案。 那么在android如何使用sqlite的内存数据库呢? 看SQLiteDatabase的源码: /** * Create a ...
  • TimesTen内存数据库体系结构

    千次阅读 2016-04-13 23:47:07
     Oracle TimesTen In-Memory Database(以下简称TimesTen IMDB)是一种业界领先的内存中关系数据库,它是Oracle的一款战略性产品。已经有成千个客户部署了TimesTen IMDB,事实证明这种产品技术加快了应用程序的响应...
  • H2内存数据库

    千次阅读 2017-05-21 18:10:02
    之前项目用到了H2内存数据库,做下整理: H2数据库介绍 常用的开源数据库:H2,Derby,HSQLDB,MySQL,PostgreSQL。其中H2,HSQLDB类似,十分适合作为嵌入式数据库使用,其它的数据库大部分都需要安装独立的...
  • 我想把sqlite数据库包含到c#项目,然后用的时候只读,,请问怎么用sqlite读取内存中数据库
  • 把常用高频访问数据从数据库加载到内存数据库的变化能够自动实时更新内存
  • ...内存数据库就是将数据放在内存直接操作的数据库,它利用内存的读写速度比磁盘快、内存是随机访问而磁盘是顺序访问这两个特点,将数据保存在内存,在内存模仿建立表结构和索引结构并
  • Oracle内存数据库和内存网格的区别

    千次阅读 2016-05-26 13:45:49
    Oracle的内存计算产品包括DB12c In-Memory,TimesTen和Coherence,本文探讨的是In-Memory列式内存数据库和内存网格Coherence的区别Coherence并非数据库的选项,而是独立的内存网格产品,即分布式key-value内存存储。...
  • 内存数据库与磁盘数据库的区别

    千次阅读 2015-02-28 15:41:31
    内存数据库与磁盘数据库主要区别
  • 内存数据库与磁盘数据库

    千次阅读 2018-09-02 10:26:34
    1、磁盘数据库需要频繁地访问磁盘来进行数据的操作,由于对磁盘读写数据的操作一方面要进行磁头的机械移动,另一方面受到系统调用(通常通过CPU中断完成,受到CPU时钟周期的制约)... 内存数据库数据处理速度比传统...
  • Perst是McObject公司的开源、双重授权、面向对象的内存实时数据库系统(ODBMS)...Perst使开发人员能够在使用Java与C#的面向对象方法的同时,在其程序以最快的速度和较低的内存及存储开销来排序、存储以及检索对象。
  • 常用内存数据库介绍

    万次阅读 2018-07-09 23:18:55
    1. 内存数据库简介 1.1 概念 一、什么是内存数据库 传统的数据库管理系统把所有数据都放在磁盘上进行管理,所以称做磁盘数据库(DRDB:Disk-Resident Database)。磁盘数据库需要频繁地访问磁盘来进行数据的操作,...
  • Oracle的内存数据库战略

    万次阅读 2016-05-19 10:03:27
    TimesTen和Database In-Memory,非常值得一读,两种技术的重要特性完全涵盖,可以让读者很快的对Oracle内存数据库技术的关键点有一个全面的认识,建议看完此文后可以对参考的原文再读一遍。概述随着内存容量不断...
  • 内存数据库比磁盘数据库要快,即使在传统数据库中,你将整个表缓存到内存。 这次培训,Sam老师又温习了一下,并给出一个例子: ...而在内存数据库中,page一列存放的是地址指针,可以直接访问,相对于Oracle有多次...
  • Qt之内存数据库

    千次阅读 2019-11-12 19:25:44
    内存数据库,顾名思义就是将数据放在内存直接操作的数据库。相对于磁盘,内存的数据读写速度要高出几个数量级,将数据保存在内存相比从磁盘上访问能够极大地提高应用的性能。所以在有大量数据交互时使用内存...
  • nosql数据库与内存数据库

    千次阅读 2015-09-29 11:27:45
    NoSQL数据库没有标准的查询语言(SQL),许多NoSQL数据库都有REST式的数据接口或者查询API。 使用场景: 1、数据模型比较简单; 2、需要灵活性更强的IT系统; 3、对数据库性能要求较高; 4
  • 【摘要】 本文提出了一种通过引入内存数据库层,建立两层多分区分布式数据库架构。此方案用于解决海量高并发系统的数据存储和访问问题,尤其适用于电子商务等数据模型复杂且业务复杂的互联网站。 这些年互联网站...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,029,611
精华内容 411,844
关键字:

内存中的数据库