嵌入式数据库msql在Linux下的应用
时间:2008-05-30 来源:剑心通明
嵌入式数据库的名称来自其独特的运行模式。这种数据库嵌入到了应用程序进程中,消除了与客户机服务器配置相关的开销。嵌入式数据库实际上是轻量级的,在运行时,它们需要较少的内存。它们是使用精简代码编写的,对于嵌入式设备,其速度更快,效果更理想。嵌入式运行模式允许嵌入式数据库通过 SQL 来轻松管理应用程序数据,而不依靠原始的文本文件。嵌入式数据库还提供零配置运行模式,这样可以启用其中一个并运行一个快照。
在嵌入式系统中,对数据库的操作具有定时限制的特性,这里把应用于嵌入式系统的数据库系统称为嵌入式数据库系统或嵌入式实时数据库系统(ERTDBS)。
可靠性要求是毋庸置疑的,嵌入式系统必须能够在没有人工干预的情况下,长时间不间断地运行。同时要求数据库操作具备可预知性,而且系统的大小和性能也都必须是可预知的,这样才能保证系统的性能。 嵌入式系统中会不可避免地与底层硬件打交道,因此在数据管理时,也要有底层控制的能力,如什么时候会发生磁盘操作,磁盘操作的次数,如何控制等。底层控制的能力是决定数据库管理操作的关键。
目前嵌入式软件系统开发的挑战之一,体现在对各种数据的管理能否建立一套可靠、高效、稳定的管理模式,嵌入式数据库可谓应运而生。
嵌入式数据库是嵌入式系统的重要组成部分,也成为对越来越多的个性化应用开发和管理而采用的一种必不可少的有效手段。
嵌入式数据库用途广泛,如用于消费电子产品、移动计算设备、企业实时管理应用、网络存储与管理以及各种专用设备,这一市场目前正处于高速增长之中。
举简单例子,手机原来只用来打电话、发短信,现在手机增加了很多新的功能,比如彩信、音乐、摄影、视频等等,应用的功能多了,系统就变得复杂。
二 、mSQL 简介
mSQL(mini SQL)是一个单用户数据库管理系统,个人使用免费,商业使用收费。由于它的短小精悍,使其开发的应用系统特别受到互联网用户青睐。mSQL(mini SQL)是一种小型的关系数据库,性能不是太好,对SQL语言的支持也不够完全,但在一些网络数据库应用中是足够了。由于mSQL较简单,在运行简单的SQL语句时速度比MySQL略快,而MySQL在线程和索引上下了功夫,运行复杂的SQL语句时比mSQL,PostgreSQL等都要快一些。MSQL的网址是:http://www.hughes.com.au ,最新版本是2005年5月8日发布的3.7.MSQL的标志是一个鹿。见图1
图1mSQL LOGO标志
mSQL的技术特点:安全性方面,mSQL通过ACL文件设定各主机上各用户的访问权限,缺省是 全部可读/写。mSQL缺乏 ANSI SQL 的大多数特征,它仅仅实现了一个最最少的API,没有事务和参考完整性。mSQL与Lite(一种类似C的脚本语言,与分发一起发行)紧密结合,可以得到一个称为 W3-mSQL的一个网站集成包,它是JDBC、ODBC、Perl和PHP API.
三 、安装Msql
目前,mSQL官方网站为:http://www.hughes.com.au,它以两种形式发布,一种是以RPM软件包方式,另一种是用tar压缩的源代码方式。对于RPM软件包方式的软件包安装很简单,只用一条命令就可以完成:Rpm –ivh msql-3.7.rpm
而对于以源代码方式发布的mSQL安装则要麻烦一些。首先用gunzip解压软件包“gunzip msql一3.7.tar.gz”;接着用。setup进行设置编译选项;然后就可以开始编译mSQL源程序“make all”l最后执行“make install” 即可完成安装。
在实际应用中我们改动得最多的是mSQL—User 和Admin—User这两个参数。mSQL—User指明运行mSQL数据库服务程序的用户,而Admin—User指明能对mSQL数据库系统执行特权操作(如:关闭数据库服务程序的运行,创建数据库等操作)的用户。因此,如果你希望mSQL服务程序以database这个用户运行,指定admin这个用户能执行数据库操作,你要将mSQL—User和Admin—User所在的行分别改为:mSQL—User = database和Admin—User = admin.另外你还必须将Hughes目录下的文件和目录的属主改为database.在配置完成后,注销当前用户的身份,重新以msql.conf的参数 mSQL—User设定的用户登录到系统,进入/usr/local/Hughes/bin目录键入如下的命令:。/msql3d &,这样就启动了mSQL数据库系统。msql.conf典型配置文件如下:
# msql.conf - Configuration file for Mini SQL Version 3 # This configuration sets all options to their default values. # Note : %I is expanded to the value of the Inst_Dir element is included in a value. [general] Inst_Dir = /usr/local/msql3 mSQL_User = daemon Admin_User = root Pid_File = %I/msql3.pid TCP_Port = 1114 UNIX_Port = %I/msql3.sock [system] Msynch_Timer = 30 Host_Lookup = True Read_Only = False Num_Children = 3 Table_Cache = 8 Sort_Max_Mem = 1000 Force_Munmap = False Query_Log = False Update_Log = False Local_Access = True Remote_Access = False |
四、mSQL工具程序
工具名称:msql
功能:可与mSQL 服务器连线,直接存取资料库。
工具名称:relshow
功能:可得知mSQL 服务器资料库的架构。
工具名称:msqladmin
功能:此工具可管理资料库,做新增、删除资料库 等动作,还可以关闭mSQL 服务器。功能依照参数不同来决定。
参数选项:createdb_name新增一个名叫db_name的资料库。
dropdb_name删除名叫db_name的资料库。
shutdown关闭mSQLServer. reload重新读取ACL设定档案,采用新的设定值。
version显示系统版本与相关资讯。
stats显示系统的统计资料。
工具名称:msqldump
功能:可产生一个包含了SQL命令的ASCII档案,这个档案可以重建资料库架构。
工具名称:msqlexport
功能:将资料库某table中的所有资料一笔笔显示出 来。
工具名称:msqlimport
功能:可从一个文字档中的资料一笔笔转换到资料库中。
五、msql的API 函数
对嵌入式系统而言。应用程序往往是通过调用SQL的API函数来执行对特定数据库的操作。API函数使得任何c语言程序都可以与mSQL的数据库引擎进行通信。
表1 mSQL主要API函数表
序号 函数名称 功能描述 1 msqlConnect() 用于建立与mSQL服务器的连接 2 msqlQuery() 用于向mSQL服务器提交SQL操作命令 3 msqlSelectDB() 对数据库进行查询等操作前,调用本函数将之选中 4 msqlStoreResult()用于保存查询 5 msqlClose() 关闭己打开的数据库,以释放系统资源 6 msqlListDBs() 用于取当前己连接的mSQL服务器上的数据库列表 7 msqlListlndex() 用于获得数据表索引 |
总结:从1996年发布mSQL 1.0到目前的mSQL 3.7,mSQL的性能得到不断的提升,世界知名的HP和Cisco等公司都在使用mSQL.本文对mSQL的特性、配置、API函数及应用等做了介绍,更多的技术资料可以参考官方网站。目前国内还没有msql书籍,更多msql更高级的使用技术,读者可以参考此书:Mini SQL Version 3 Users Guide and Reference
Mini SQL Version 3 Users Guide and Reference 封面