常用主存数据库
第九章数据库

3.孤立点分析(outlier analysis),它试图 识别出不符合规则的数据项。 4.序列模式分析(sequential pattern analysis),它试图确定随时间变化的行为 模式。 9.7数据库技术的社会影响
当今的技术已经能够存储相当大数量的数 据,但是,如果我们不能提取与手头工作 相关的有用信息项,那么这样的数据集就 是无用的。在本章中,我们将研究数据库 系统,并弄清这些系统是怎样利用抽象工 具从庞大的数据集合中提取出有用的信息。 作为相关主题,我们还要研究数据挖掘, 即一个与数据库技术密切相关的快速发展 的领域,其目标是发展在数据集上确定和 寻找数据的模式。此外,我们还将学习传 统文件结构的原理,因为他支撑了现在的 数据库和数据挖掘系统。
9.4维护数据库的完整性 9.4.1提交/回滚协议 把一个事务的所有步骤记录进日志文件的 那个点,称为提交点(commit point)。 如果问题出现在事务达到其提交点之前, 那么DBMS可能会发现自己不能完成已经执 行了一部分的事务。这种情况可以利用日 志回滚(rollback)(也称为撤销)实际上 已被事务实施的活动。
碰撞或者溢出的解决方法:一是允许扩展 桶的大小,二是允许桶溢出到一个专门为 解决这种问题二保留的溢出区。 记录的数目与文件中总的记录容量之比称 为负载因子(load factor)。 例如:14,34,7,6,9,21, 44,27,,散列函数 Xmod11,在来数据32。
0 1 2 3 4 5 6 7 8 9 10
一个事务的回滚可能会影响到别的事务, 造成这些事务也需要回滚,结果就产生了 级联回滚(cascading rollback)。 9.4.2锁定 数据库可能出现错误决算问题(incorrect summary problem)和更新丢失问题(lost update problem)。 锁定协议(locking protocol),该协议规定, 数据库中当前正在被某个事务使用的项目 都要加以标记。
内存数据库及其在实时计费系统中的应用

求, 将内存数据库技术应用于实时计费系统,阐述了实时计费系统的应用模型、内 存数据库的系统结构及功
能要求 。
关键词 内存数据库; 计费系统;实时计费 中图分类号 T 995 N2. 文献标识码 A 文章编号 10- 59(02 3 06 — 4 08 59 21)0— 02 0
TELEc oM ENG | EER| N NG TEcHN | s AND sT NDA RDl c A zATl N o
内存数据库及其在实时计费系统 中的应用
武 振字 ( 中国移 动通 信集 团设 计院有 限公 司,北京 10 8 ) 00 0
摘 要 内存数据从传统的磁盘数据库发展而来,把整个数据表存放到内存中,极大地提高了数据库系统的处理能
的结果 ,计算话 单的费用。从应用 的特点来看 ,由于计
而会产生一些根本性的变化。内存数据库 ( MD )与 M B
传统的磁盘数据库 ( R B)主要差异如表 l D D 所示 。 内存数据库系统带来的优越性能不仅仅在于对 内存 读 写比对磁盘读写快上 ,更重要的是,从根本上抛弃了 磁盘数据管理 的许多传统方式,基于全部数据都在 内存 中管理进 行了新 的体系结 构的设计 ,并且在数据缓存、
确的服务, 对运营支撑系统提出了很大的挑战。 传统
数据库在这些方面显得力不从心 ,而内存数据库由于大 量数据在 内存 中运行,没有 过多的 IO 操作 ,能较好 /
响,当数据量很大, 操作频繁且复杂时, 就会暴露出很
多问题。
近年来,内存容量不断提高, 价格不断下跌,操作
计算机进入了6 4 地满足实时性、灵活性、精确性的要求,在电 信领域得 系统已经可以支持更大的地址空间 (
内存数据库(sqllite)使用介绍

内存数据库(sqllite)使用介绍数据库的发展数据库技术的发展,已经成为先进信息技术的重要组成部分,是现代计算机信息系统和计算机应用系统的基础和核心。
数据库技术最初产生于20世纪60年代中期,根据数据模型的发展,可以划分为三个阶段:第一代的网状、层次数据库系统;第二代的关系数据库系统;第三代的以面向对象模型为主要特征的数据库系统。
第一代数据库的代表是1969年IBM公司研制的层次模型的数据库管理系统IMS和70年代美国数据库系统语言协商CODASYL下属数据库任务组DBTG提议的网状模型。
层次数据库的数据模型是有根的定向有序树,网状模型对应的是有向图。
这两种数据库奠定了现代数据库发展的基础。
这两种数据库具有如下共同点:1.支持三级模式(外模式、模式、内模式)。
保证数据库系统具有数据与程序的物理独立性和一定的逻辑独立性;2.用存取路径来表示数据之间的联系;3.有独立的数据定义语言;4.导航式的数据操纵语言第二代数据库的主要特征是支持关系数据模型(数据结构、关系操作、数据完整性)。
关系模型具有以下特点:1.关系模型的概念单一,实体和实体之间的连系用关系来表示;2.以关系数学为基础;3.数据的物理存储和存取路径对用户不透明;4.关系数据库语言是非过程化的。
第三代数据库产生于80年代,随着科学技术的不断进步,各个行业领域对数据库技术提出了更多的需求,关系型数据库已经不能完全满足需求,于是产生了第三代数据库。
主要有以下特征:1.支持数据管理、对象管理和知识管理;2.保持和继承了第二代数据库系统的技术;3.对其它系统开放,支持数据库语言标准,支持标准网络协议,有良好的可移植性、可连接性、可扩展性和互操作性等。
第三代数据库支持多种数据模型(比如关系模型和面向对象的模型),并和诸多新技术相结合(比如分布处理技术、并行计算技术、人工智能技术、多媒体技术、模糊技术),广泛应用于多个领域(商业管理、GIS、计划统计等),由此也衍生出多种新的数据库技术。
内存数据库 原理

内存数据库原理内存数据库(In-Memory Database,IMDB)是一种将数据存储在主存储器中的数据库管理系统。
相较于传统磁盘存储的数据库,内存数据库能够提供更快的数据访问速度和更低的延迟。
本文将详细介绍内存数据库的原理。
内存数据库的主要原理是将数据存储在计算机的主存储器中,而不是存储在磁盘上。
这种存储方式带来了两个主要的优势:快速的数据访问速度和低延迟。
相较于读取磁盘的时间,访问主存的时间非常短,因此内存数据库可以实现更快的数据读取和写入操作。
此外,内存数据库还可以充分利用计算机主存储器的多核性能,实现并行处理和高并发访问。
内存数据库的实现有两个主要方面:数据存储和数据管理。
数据存储是指将数据存储在主存储器中的过程,而数据管理则是指对存储在内存中的数据进行管理和操作的过程。
在数据存储方面,内存数据库使用多种技术来优化数据的存储和访问性能。
首先,内存数据库使用了高效的数据结构,如哈希表、红黑树等,来存储和组织数据。
这些数据结构可以提供快速的数据查找和访问操作。
此外,内存数据库还使用了压缩算法来减小数据的存储空间,以提高数据的高效利用率。
压缩算法可以根据数据的特性和存储需求,对数据进行压缩和解压缩操作,从而减小数据的存储空间,提高数据的读写性能。
在数据管理方面,内存数据库采用了一些策略来管理和优化数据的操作。
首先,内存数据库采用了基于内存的索引结构,如B+树、哈希表等,来加速数据的查找和访问操作。
这些索引结构可以提供快速的数据访问和查询,从而减少数据库的访问延迟。
此外,内存数据库还使用了事务管理机制来保证数据的一致性和完整性。
事务管理机制可以对数据的读写操作进行原子性、一致性、隔离性和持久性的管理,从而保证数据的安全性和可靠性。
内存数据库还采用了一系列的技术来提高数据库的性能和可扩展性。
首先,内存数据库使用了预取和延迟写入技术来优化数据的访问效率。
预取技术可以在数据被访问之前将其提前加载到主存储器中,从而减少数据的读取延迟。
FastDB、SQLite、Berkeley DB

BerkeleyDB与SQLite评测对比最近要做一个项目,需要用到实时数据库,PI太贵了,想找一个免费的,实在不行就只能自己编了。
找了半天,找到了FastDB、BerkeleyDB和SQLite.FastDB是内存型数据库,据说很快,但数据库大小不能大于物理内存,不然。
反正我看到这就走了,我可是要一秒内处理几千个数据,还要保存8小时以上的啊!BerkeleyDB 和SQLite倒没有数据库大小不能大于物理内存的限制,我对他们的性能进行了测试,结果如下:Berkeley DB Sqlite插入10000条记录耗时0.08秒0.42秒插入100000条记录耗时 2.31秒 3.81秒插入7200000条记录耗时1024.34秒249秒插入57600000条记录耗时12860.78秒2155.14秒插入172800000条记录耗时48039.64秒6352.06秒10000条记录查1记录耗时少于0.01秒少于0.01秒100000条记录查1记录耗时少于0.01秒少于0.01秒7200000条记录查1记录耗时少于0.01秒少于0.01秒57600000条记录查1记录耗时0.03秒0.16秒172800000条记录查1记录耗时 0.03秒0.09秒10000条记录数据库大小0.628M 0.527M100000条记录数据库大小 5.29M 5.32M7200000条记录数据库大小 516M 405M57600000条记录数据库大小3087.13M 3925.8M172800000条记录数据库大小11890.7M 10621.2M*机器配置:Core2 E4500CPU、2G内存上表为两种数据库只建一个索引,Berkeley DB不支持事务、Sqlite支持事务情况下的数据,如果Berkeley DB打开事务支持,速度会下降很大的数量级,根本不能满足需求。
另外在程序崩溃后Berkeley DB数据库不可用,Sqlite数据库仍可正常使用。
数据库技术的发展史

数据库技术的发展史
1960年,IBM开发了第一个集成的数据库系统,它是一个统一的主存
数据存储,使用文件管理系统实现数据的存取和处理,是当时最先进的系统。
1965年,IBM推出了全新的关系数据库技术,即结构化查询语言(SQL)。
它使用带有头部的表的概念,可以通过连接多个表来获取所需
的数据,使用简单的查询语法可以提取、更新和管理数据,为数据库的管
理和处理提供了可靠的框架。
1974年,贝尔实验室发明了概念数据库语言(CDL),首先提出了实
体-关系模型,将数据库模型从表格式转变为对象式,更加便于数据字典
的管理。
1979年,IBM推出了第一个实用的关系数据库系统,称为DB2,它采
用了实体-关系模型,支持关系式查询语言,并提供了一个交互式应用程
序环境,使得数据库管理变得简单易行。
1980年,开普勒公司(Oracle)开发了第一个商业关系数据库系统,称为Oracle,它采用了实体-关系模型,并支持关系式查询和交互式应用
程序环境。
什么是计算机存储器常见的计算机存储器有哪些

什么是计算机存储器常见的计算机存储器有哪些计算机存储器是一种用来存储数据和指令的设备,是计算机系统的一个重要组成部分。
计算机存储器一般分为主存储器和辅助存储器两种。
主存储器:主存储器是计算机中用来存储数据和指令的地方,也被称为内存。
主存储器是在计算机运行时被CPU直接访问的一种存储设备,主要用来存储当前正在执行的程序和数据。
主存储器的速度比较快,但容量有限。
主存储器的存取速度取决于存储介质的类型,常见的主存储器包括动态随机存取存储器(DRAM)和静态随机存取存储器(SRAM)。
1. DRAM(Dynamic Random Access Memory):动态随机存取存储器是一种常见的主存储器,使用电容和晶体管来存储数据。
DRAM需要不断地刷新存储的数据,因此速度比较慢,但成本低廉,容量大。
DRAM广泛应用于个人电脑和其他计算设备上。
2. SRAM(Static Random Access Memory):静态随机存取存储器也是一种常见的主存储器,使用触发器来存储数据。
相比于DRAM,SRAM的读写速度更快,但成本更高,容量较小。
SRAM通常用于缓存和高性能计算机系统中。
辅助存储器:辅助存储器是计算机中用来存储数据和程序的一种永久性存储设备,主要是用来存储不常用的数据和程序。
辅助存储器通常比主存储器容量更大,但速度较慢。
1. 硬盘驱动器(Hard Disk Drive,HDD):硬盘驱动器是一种机械存储设备,使用磁性记录技术来存储数据。
硬盘驱动器容量大,价格便宜,但读写速度较慢。
硬盘驱动器广泛用于个人电脑和服务器上。
2. 固态硬盘(Solid State Drive,SSD):固态硬盘是一种电子存储设备,使用闪存芯片来存储数据。
固态硬盘读写速度快,耐用性强,但价格相对较高。
固态硬盘逐渐取代了传统的硬盘驱动器,成为计算机存储器的主要形式之一3.光盘和闪存盘(CD-ROM、DVD-ROM、USB闪存盘):光盘和闪存盘是一种便携式存储设备,用来存储数据和程序。
常用主存数据库

常用主存数据库1.内存数据库简介传统的数据库管理系统把所有数据都放在磁盘上进行管理,所以称做磁盘数据库(DRDB:Disk-Resident Database)。
磁盘数据库需要频繁地访问磁盘来进行数据的操作,由于对磁盘读写数据的操作一方面要进行磁头的机械移动,另一方面受到系统调用(通常通过CPU中断完成,受到CPU时钟周期的制约)时间的影响,当数据量很大,操作频繁且复杂时,就会暴露出很多问题。
近年来,内存容量不断提高,价格不断下跌,操作系统已经可以支持更大的地址空间(计算机进入了64位时代),同时对数据库系统实时响应能力要求日益提高,充分利用内存技术提升数据库性能成为一个热点。
在数据库技术中,目前主要有两种方法来使用大量的内存。
一种是在传统的数据库中,增大缓冲池,将一个事务所涉及的数据都放在缓冲池中,组织成相应的数据结构来进行查询和更新处理,也就是常说的共享内存技术,这种方法优化的主要目标是最小化磁盘访问。
另一种就是内存数据库(MMDB:Main Memory Database,也叫主存数据库)技术,就是干脆重新设计一种数据库管理系统,对查询处理、并发控制与恢复的算法和数据结构进行重新设计,以更有效地使用CPU 周期和内存,这种技术近乎把整个数据库放进内存中,因而会产生一些根本性的变化。
两种技术的区别如下表:内存数据库系统带来的优越性能不仅仅在于对内存读写比对磁盘读写快上,更重要的是,从根本上抛弃了磁盘数据管理的许多传统方式,基于全部数据都在内存中管理进行了新的体系结构的设计,并且在数据缓存、快速算法、并行操作方面也进行了相应的改进,从而使数据处理速度一般比传统数据库的数据处理速度快很多,一般都在10倍以上,理想情况甚至可以达到1000倍。
而使用共享内存技术的实时系统和使用内存数据库相比有很多不足,由于优化的目标仍然集中在最小化磁盘访问上,很难满足完整的数据库管理的要求,设计的非标准化和软件的专用性造成可伸缩性、可用性和系统的效率都非常低,对于快速部署和简化维护都是不利的。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
常用主存数据库1.内存数据库简介传统的数据库管理系统把所有数据都放在磁盘上进行管理,所以称做磁盘数据库(DRDB:Disk-Resident Database)。
磁盘数据库需要频繁地访问磁盘来进行数据的操作,由于对磁盘读写数据的操作一方面要进行磁头的机械移动,另一方面受到系统调用(通常通过CPU中断完成,受到CPU时钟周期的制约)时间的影响,当数据量很大,操作频繁且复杂时,就会暴露出很多问题。
近年来,内存容量不断提高,价格不断下跌,操作系统已经可以支持更大的地址空间(计算机进入了64位时代),同时对数据库系统实时响应能力要求日益提高,充分利用内存技术提升数据库性能成为一个热点。
在数据库技术中,目前主要有两种方法来使用大量的内存。
一种是在传统的数据库中,增大缓冲池,将一个事务所涉及的数据都放在缓冲池中,组织成相应的数据结构来进行查询和更新处理,也就是常说的共享内存技术,这种方法优化的主要目标是最小化磁盘访问。
另一种就是内存数据库(MMDB:Main Memory Database,也叫主存数据库)技术,就是干脆重新设计一种数据库管理系统,对查询处理、并发控制与恢复的算法和数据结构进行重新设计,以更有效地使用CPU 周期和内存,这种技术近乎把整个数据库放进内存中,因而会产生一些根本性的变化。
两种技术的区别如下表:内存数据库系统带来的优越性能不仅仅在于对内存读写比对磁盘读写快上,更重要的是,从根本上抛弃了磁盘数据管理的许多传统方式,基于全部数据都在内存中管理进行了新的体系结构的设计,并且在数据缓存、快速算法、并行操作方面也进行了相应的改进,从而使数据处理速度一般比传统数据库的数据处理速度快很多,一般都在10倍以上,理想情况甚至可以达到1000倍。
而使用共享内存技术的实时系统和使用内存数据库相比有很多不足,由于优化的目标仍然集中在最小化磁盘访问上,很难满足完整的数据库管理的要求,设计的非标准化和软件的专用性造成可伸缩性、可用性和系统的效率都非常低,对于快速部署和简化维护都是不利的。
2.内存数据库历史和发展2.1雏形期从上个世纪60年代末到80年代初。
在这个时期中,出现了主存数据库的雏形。
1969年IBM公司研制了世界上最早的数据库管理系统------基于层次模型的数据库管理系统IMS,并作为商品化软件投入市场。
在设计IMS时,IBM考虑到基于内存的数据管理方法,相应推出了IMS/VS Fast Path。
Fast Path是一个支持内存驻留数据的商业化数据库,但它同时也可以很好地支持磁盘驻留数据。
在这个产品中体现了主存数据库的主要设计思想,也就是将需要频繁访问,要求高响应速度的数据直接存放在物理内存中访问和管理。
在这个阶段中,包括网状数据库、关系数据库等其他各种数据库技术也都逐渐成型。
2.2技术理论成熟期1984年,D J DeWitt等人发表了《主存数据库系统的实现技术》一文。
第一次提出了Main Memory Database(主存数据库)的概念。
预言当时异常昂贵的计算机主存价格一定会下降,用户有可能将大容量的数据库全部保存在主存中,提出了AVL树、哈希算法、主存数据库恢复机制等主存数据库技术的关键理论,为主存数据库的发展指出了明确的方向。
1984年,D J DeWitt等人提出使用非易逝内存或预提交和成组提交技术作为主存数据库的提交处理方案,使用指针实现主存数据库的存取访问。
1985年,IBM推出了IBM370上运行的OBE主存数据库1986年,RB Hagman提出了使用检查点技术实现主存数据库的恢复机制。
威斯康星大学提出了按区双向锁定模式解决主存数据库中的并发控制问题。
并设计出MM-DBMS主存数据库。
贝尔实验室推出了DALI主存数据库模型。
1987年,ACM SIGMOD会议中提出了以堆文件(HEAP FILE)作为主存数据库的数据存储结构。
Southern Methodist大学设计出MARS主存数据库模型。
1988年普林斯顿大学设计出TPK主存数据库。
1990年普林斯顿大学又设计出System M主存数据库。
2.3产品发展期和市场成长期随着互联网的发展,越来越多的网络应用系统需要能够支持大用户量并发访问、高响应速度的的数据库系统,主存数据库市场成熟半导体技术快速发展,半导体内存大规模生产,动态随机存取存储器(DRAM)的容量越来越大,而价格越来越低,这无疑为计算机内存的不断扩大提供了硬件基础,使得主存数据库的技术可行性逐步成熟1994年美国OSE公司推出了第一个商业化的,开始实际应用的主存数据库产品Polyhedra1998年德国SoftwareAG推出了Tamino Database。
1999年日本UBIT会社开发出XDB主存数据库产品。
韩国Altibase推出Altibase2000年奥地利的QuiLogic公司推出了SQL-IMDB2001年美国McObject推出eXtremeDB。
加拿大Empress公司推出EmpressDB2.4几种主存技术应用的比较第一代:用户定制的主存数据库。
通过应用程序来管理内存和数据;不支持SQL语句,不提供本地存储,没有数据库恢复技术;性能好但很难维护和在别的应用中不能使用;应用在实时领域比如工厂自动化生产。
第二代:简单功能的内存数据库。
能够快速处理简单的查询;支持部分的SQL 语句和简单的恢复技术;主要目的是能够快速处理大量事务;针对简单事务处理领域,尤其是交换机,移动通信等。
第三代:通用的主存数据库。
针对传统的商业关系型数据库领域,能够提供更高的性能、通用性以及稳定性;提供不同的接口来处理复杂的SQL语句和满足不同的应用领域;可以应用在计费、电子商务、在线安全领域,几乎包括磁盘数据库的所有应用领域。
2.5目前几种常见的通用内存数据库eXtremeDB:eXtremeDB实时数据库是McObject公司的一款特别为实时与嵌入式系统数据管理而设计的数据库,只有50K到130K的开销,速度达到微秒级。
eXtremeDB完全驻留在主内存中,不使用文件系统(包括内存盘)。
eXtremeDB 采用了新的磁盘融合技术,将内存拓展到磁盘,将磁盘当做虚拟内存来用,实时性能保持微秒级的同时,数据管理量在32BIT下能达到20G。
Oracle TimesTen:Oracle TimesTen是Oracle从TimesTen公司收购的一个内存优化的关系数据库,它为应用程序提供了实时企业和行业(例如电信、资本市场和国防)所需的即时响应性和非常高的吞吐量。
Oracle TimesTen可作为高速缓存或嵌入式数据库被部署在应用程序层中,它利用标准的SQL接口对完全位于物理内存中的数据存储区进行操作。
SolidDB:Solid Information Technology成立于1992年,全球总部位于加州Cupertino,Solid数据管理平台将基于内存和磁盘的全事务处理数据库引擎、载体级高可用性及强大的数据复制功能紧密地融为一体。
Altibase:ALTIBASE公司从1999年就一直致力于内存数据库软件和其应用的开发,提供高性能和高可用性的软件解决方案。
特别适合通信、网上银行、证券交易、实时应用和嵌入式系统领域。
目前占据80%以上内存数据库市场,可以说是当今数据库软件技术的领导者。
目前Altibase在国内成功案例也比较多,尤其是在电信行业,已经得到了广泛认可。
3.常用内存数据库3.1SQLiteSQLite是一个小型的C程序库,实现了独立的,可嵌入的,零配置的SQL 数据库引擎。
特性包括✓事务操作是原子,一致,孤立,并且持久的(ACID),即使在系统崩溃和电源故障之后。
✓零配置——不需要安装和管理。
✓实现了绝大多数SQL92标准。
✓整个数据库存储在一个单一的文件中。
✓数据库文件可以在不同字节序的机器之间自由地共享。
✓支持最大可达2T的数据库。
(241字节)✓字符串和BLOB类型的大小最大可达2G字节(231字节)。
✓小的代码:完整配置的少于250KB,忽略一些可选特性的少于150KB。
✓在大多数常见操作上比流行的客户/服务器数据库引擎更快。
✓简单,易于使用的API。
✓内建TCL绑定。
另外提供可用于许多其他语言的绑定。
✓具有良好注释的源代码,95%经过测试。
✓独立:没有外部依赖。
✓源代码位于公共域。
可用于任何用途。
✓SQLite发行版包含一个独立的命令行访问程序(sqlite),可用于管理SQLite 数据库,并适合作为一个如何使用SQLite库的例子。
✓License:SQLite使用Public domain授权(注),对于个人使用和商业使用都是免费的。
技术上的优点和特性SQLite是一个轻量级、跨平台的关系型数据库。
✓轻量级先说它的第一个特色:轻量级。
想必SQLite的作者很看重这个特性,连它的Logo都是用的“羽毛”,来显摆它的轻飘飘。
SQLite和C/S模式的数据库软件不同,它是进程内的数据库引擎,因此不存在数据库的客户端和服务器。
使用SQLite 一般只需要带上它的一个动态库,就可以享受它的全部功能。
而且那个动态库的尺寸也挺小,以版本3.6.11为例,Windows下487KB、Linux下347KB。
✓绿色软件SQLite的另外一个特点是绿色:它的核心引擎本身不依赖第三方的软件,使用它也不需要“安装”。
所以在部署的时候能够省去不少麻烦。
✓单一文件所谓的“单一文件”,就是数据库中所有的信息(比如表、视图、触发器、等)都包含在一个文件内。
这个文件可以copy到其它目录或其它机器上,也照用不误。
技术上的缺点和不足✓并发访问的锁机制SQLite在并发(包括多进程和多线程)读写方面的性能一直不太理想。
数据库可能会被写操作独占,从而导致其它读写操作阻塞或出错。
✓SQL标准支持不全在它的官方网站上,具体列举了不支持哪些SQL92标准。
我个人感觉比较不爽的是不支持外键约束。
✓网络文件系统(以下简称NFS)有时候需要访问其它机器上的SQLite数据库文件,就会把数据库文件放置到网络共享目录上。
这时候你就要小心了。
当SQLite文件放置于NFS时,在并发读写的情况下可能会出问题(比如数据损坏)。
原因据说是由于某些NFS的文件锁实现上有Bug。
编程语言接口SQLite支持很多种语言的编程接口。
这对于我这种喜欢混用多种编程语言的人来说,是很爽的。
下面我大概介绍一下。
✓C/C++由于SQLite本身是C写的,它自带的API也是C接口的。
所以C/C++用起来最直接了。
假如你不喜欢面向过程的C API风格,可以另外找个C++的包装库。
想重新发明轮子的同学,也可以自己包装一个。
✓Java如果要用Java访问SQLite,可以通过SQLite的JDBC驱动,或者通过专门的SQLite包装库。