最近一段时间做了一个需要使用数据库的项目,由于要应用到嵌入式系统中,所以MyQql等大型的数据没有办法使用,幸好有Minisql。一个小巧的开源数据库,在嵌入式系统中,可以完全满足简单的需要。
代码下载:
http://www.hughes.com.au/
大家也可以通过google去下载,下载的地方还是挺多的。我选择的是3.8版。虽然项目是几年前的,但是还是很好用的。
进入正题:
第一部分,编译。
我使用的系统是ubuntu 10.04,虽然有一些库要自己安装,但是习惯了。很多东西自己配置一下就好了。
第一步:进入目录,运行命令:./setup。
在这里,遇到了一个问题,就是ubuntu10.04下没有bison库,我不知道,别的版本下有没有,如果没有自己装一个就好了。一般的源里都有的。安装好了,就可以通过setup的测试。
第二步:先make all一下试试,默认的是gcc编译器,先make一小下,如果成功了,在ubuntu下先安装一个,放在板子上测试还是比较麻烦的。
如果你在pc没有问题了,就是交叉编译的问题了。
我用的编译器是arm-linux-gcc 3.4.5, 一直对4.0版本的编译器不感冒,虽然看着很牛逼(嘿嘿)。这里几乎不需要修改什么,只要修改一个文件就好。/conf/site.mm.in,修改两个东西就好。第一行,改成arm-linux-gcc,第二行,你的安装目录。然后重新做,第一步和第二步。应该没什么问题吧。
第三步:make install了。交叉编译安装完毕。
第二部分:配置
配置更简单了,在目录下面有一个msql.conf。里面有各种配置信息。
我把它装到了NFS的文件系统中了,遇到了两个问题,一个是找不到配置信息,一个是连接不上。
第一个问题,用了最傻的办法,建立了N个文件目录,模拟了一下,它要求的绝对路径,然后发现可以了。
第二个问题,默认的使用unix socket连接的,但是我发现我的板子上的Linux貌似不支持,也没仔细查找什么问题,我就把配置文件给改了,让它使用IP连接。就是将Remote_Access=Ture就好了。
对了,这里有一个问题,如果要修改mSQL_User,那么你的安装目录拥有者必须与这个名字相同,不然会有错误,手册上也这么写的。
做了简单的配置,就可以使用它了。
第三部分:使用
在安装目录的/bin目录下有一些命令,可以使用。
msql3d,服务器启动命令,无论是直接使用,还是编程使用,都要开启服务器的。
msql db,进入你命名的数据库。
msqladmin,创建数据库等命令。
里面还有几个命令,就不一一介绍了,大家可以去看用户手册,恩,英文的,但是挺容易懂的。
第四部分:编程
minisql,提供了 C语言的API,方便使用。
开始先,msqlConnect()上,然后再msqlSelectDB()。然后,msqlQuery()可以发送命令。函数提供的还是很全的,一般编程使用没有问题。
编译需要几个文件,一个是msql.h,这个安装目录中可以找到,在include文件夹下,还有就是两个静态库文件,在lib下。编译的时候,正常使用静态库就行了。(有个老外说,用到makefile中,就编译没通过,可能他语法错误了,反正我就没遇到这个问题。)
对了,记得,arm下的库和pc下的库不能用一个,一定要分别编译出。
末尾:
这个数据库的效率还是可以的,我做过测试,50000条数据,在200MHz CPU,检索速度在1分钟以内,基本进行小数据量的处理和检索可以满足我的要求了。
PS:突然发现,这是第一篇哎,小子学艺不精,请各位大大多多指正。