内存数据库与磁盘数据库

参考网址:https://blog.csdn.net/dh2442897094/article/details/64440130

1、磁盘数据库需要频繁地访问磁盘来进行数据的操作,由于对磁盘读写数据的操作一方面要进行磁头的机械移动,另一方面受到系统调用(通常通过CPU中断完成,受到CPU时钟周期的制约)时间的影响,当数据量很大,操作频繁且复杂时,就会暴露出很多问题。 内存数据库数据处理速度比传统数据库的数据处理速度要快很多,一般都在10倍以上。

2、在数据库技术中,目前主要有两种方法来使用大量的内存。一种是在传统的数据库中,增大缓冲池,将一个事务所涉及的数据都放在缓冲池中,组织成相应的数据结构来进行查询和更新处理,也就是常说的共享内存技术,这种方法优化的主要目标是最小化磁盘访问。另一种就是内存数据库(MMDB:Main Memory Database,也叫主存数据库)技术,就是干脆重新设计一种数据库管理系统,对查询处理、并发控制与恢复的算法和数据结构进行重新设计,以更有效地使用CPU周期和内存,这种技术近乎把整个数据库放进内存中,因而会产生一些根本性的变化。

3、常用内存数据库

Redis

SQLite

Altibase

Oracle Berkeley DB

eXtremeDB(商业)

参考网址:https://www.jianshu.com/p/4eeed6f227ab

典型的磁盘数据库就是最常用的 Oracle,Mysql,Mongodb、postgresql等。典型的内存数据库如 Redis。

数据库选型:https://www.cnblogs.com/foohack/p/5283855.html

4、Redis和SQLite的比较

SQLite比起Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度比他们都快。

参考网址:https://blog.csdn.net/lijinqi1987/article/details/51957545

SQLite并不应该用来直接和MySQL、Oracle、PostgreSQL、SQL Server这些client/server数据库比较,因为SQLite是用来解决其他的问题的。client/server数据库力图实现企业数据的共享库,他们强调可伸缩性、并发、集中和控制。SQLite试图为单独的应用程序和设备提供本地的数据存储

选型依据:

数据和应用程序被网络隔开? →选择 client/server数据库

大量并发的写操作? →选择 client/server数据库

大量并发的写操作? →选择 client/server数据库

否则,选择SQLite

参考网址:https://blog.csdn.net/guoqingcun/article/details/67634633

1:客户端/服务端应用 如果有许多客户端通过网络发送SQL到服务端,SQLITE不适用此场景

2: 大数据集 SQLITE限制大小为140T

3:高并发 SQLITE适合单线程/进程写

本机存储,低并发,低数据量,零配置,零管理

Redis是一款开源的、高性能的键-值存储 (key-value store)。它常被称作是一款数据结构服务器(data structure server)。Redis的键值可以包括字符串(strings)、哈希(hashes)、列表(lists)、集合(sets)和 有序集合(sorted sets)等数据类型。 对于这些数据类型,你可以执行原子操作。例如:对字符串进行附加操作(append);递增哈希中的值;向列表中增加元素;计算集合的交集、并集与差集等。Redis是NoSQL数据库。

参考网址:https://blog.csdn.net/u011277123/article/details/78692603/

Redis适用场景:

  1. 数据高并发的读写

  2. 海量数据的读写

  3. 对扩展性要求高的数据

Redis不适用的场景:

  1. 需要事务支持(非关系型数据库)

  2. 基于sql结构化查询储存,关系复杂

猜你喜欢

转载自blog.csdn.net/chenkaifang/article/details/82312647