- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
HYPERLINK /ExclusivePig/archive/2009/09/18/4566255.aspx /ExclusivePig/archive/2009/09/18/4566255.aspx
介绍
在近几个月以来,你也许听过一个新的PHP数据库扩展类库SQLite.好多人认为SQLite是自有面包片以来最好的东东,其提供了一个快速的访问平面文件数据库的接口.并且提供了访问大容量数据库的简洁的手段,但是并没有所意想的功能或者速度上的损失.在本文中,我们将探讨这个新的激动人心的扩展库,并且希望以此来验证其传说中的优势和好处.
啥是SQLite?
SQLite 是实现了SQL 92标准的一个大子集的嵌入式数据库.其以在一个库中组合了数据库引擎和接口,能将所有数据存储于单个文件中而著名.我觉得SQLite的功能一定程度上居于MySQL 和PostgreSQL之间.尽管如此,在性能上面,SQLite常常快2-3倍 (甚至更多).这利益于其高度调整了的内部架构,因为它除去了服务器端到客户端和客户端到服务器端的通信.
所有这些都集在一个包中,也仅仅比MySQL的客户端的库稍微大一点.而令人印象深刻的特点是你可将你的整个数据库系统放在其中.利用非常高效的内存组织,SQLite只需在很小的内存中维护其很小的尺寸,远远比其它任何数据库系统都小.这些特点使得其成为在需要高效地应用数据库的任务中一个非常方便的工具.
它对我有啥用?
除了速度和效率,SQLite还有其它好多的优势使得其能成为许多任务中一个理想的解决方案.因为SQLite的数据库都是简单文件,因此无须一个管理队伍花时间来构造复杂的权限结构来保护用户的数据库.因为权限通过文件系统自动进行.这也同时意味着(数据库空间的大小只与环境有关,与本身无关)无段特殊的规则来了解用户磁盘空间.用户可以从创建他们想要的任意多的数据库和对其对这些数据库的绝对控制权而得到好处.
数据库就是一个文件的事实使用SQLite可以轻易地在服务器间移动.SQLite也除去了需要大量内存和其它系统资源的伺候进程.即使当数据库在大量地使用时也是如此.
----------------------------惯例,以上为转载-------------------------------------
开源的东西就是强大,可惜,都是老外的,我们正好相反,越好的东西(相对好些,其实问题一堆)越是藏着,掖着,然后自以为是的炫耀,收取版权费。发点牢骚!
同样源码全是C写的,移植非常方便,对于常见的平台,Windows, Unix, Mac, Linux(类Unix), OS2等,只要把相应的宏打开,直接编译即可。
但是我们的联芯平台用的是ThreadX,官方并没有现成的,因此要自己移植。
这里说下SQlite3的源码种类,有2大类,一类是amalgamation版本,这个版本只有一个.c,是所有源码的集合,我用的就是这个版本,省去了自己写makefile,移植更容易。另一类则是按目录分的源码包。
下面说下SQlite3的移植:
原则上SQlite3只适用于多线程的平台,目前我还不清楚怎么往多任务但是却无线程概念的系统上移植。SQlite3默认用的是pthread库,因此对于有了pthread库的平台,在线程部分不需修改,否则,要么往自己的平台上移植pthread,要么就是把SQlite3中线程接口改成自己平台适用的,看自己需求了。
另一个要一直的则是文件系统接口,原则上,完全可以用标准C的fopen, fclose..函数集,但是那样的话,就不支持SQlite3的高级特性,比如数据库加锁啊,多线程的同步访问啊,但是对于嵌入式设备,这些功能往往也需要拥有,因此只要将文件系统改成标准C的接口,或者自己平台适用的接口。
因为我联芯的手机平台已经有了pthread库,因此,我只移植了文件系统部分(小小得意一把,其实本来移植工作是另外一位同事的,但因为我需求比较早,所以我花了一天时间移植了一个版本,而那个同事花了整整一个礼拜,他把线程都改了,佩服他的耐心啊!)
文件系统的移植方法简单说下:顺着sqlite3_os_init(void)修改就行了,将所有涉及文件操作的改下,没什么难度的,不过超过500行。
接着说下适用方法,和XML Parser expat一样,也是基于回调的机制:
首先打开或者创建一个数据库:
sqlite3 *db;
sqlite3_open(DATABASE_NAME, db);
函数成功返回0,如果数据库不存在,则是创建数据库,反之,则是打开
和内存的申请
文档评论(0)