软件数据库移植及数据表设计
2013-04-11 11:05
239 查看
软件数据库移植及数据表设计
1. 数据库简介
常用的数据库有Oracle,mySQL和SQLite,Oracle属于商业软件,需要购买,会增加产品成本;mySQL社区版是免费软件,但占用资源较多,且不易移植;SQLite是一个精简版的数据库软件,免费高效,支持绝大部分SQL指令。因此考虑到系统总体性能和资源占用,采用SQLite作为系统的数据库软件。
SQLite数据库特点有:
(1) 完全开源,无需独立的数据库引擎,直接嵌入到应用程序进程中,因此,通过API,应用程序可以直接操作它。
(2) 事务的处理是原子的,一致的,独立的,可持久化的(ACID),即使在系统崩溃和掉电后,也不用担心数据遭到破坏。
(3) SQLite数据库通过独占性与共享锁来实现事务的独立处理。
(4) 一个单独的跨平台的磁盘文件就能够存储一个数据库。
(5) 能支持2TB级的数据。
(6) 自包含,无外部依赖性。
(7) 支持NULL,INTEGER,NUMERIC,REAL,TEXT和BLOG等数据类型。
(8) SQLite数据库没有用户帐户的概念。数据库的权限仅依赖于文件系统。
2. 数据库移植
1.1 开发环境
硬件平台:VirtualBox虚拟机4.1.8 r75467
操作系统: Fedora14
Linux内核版本:2.6.35.14-106.fc14.i686
GCC编译器版本:4.5.1 20100924
嵌入式处理器:AT91SAM9x35
嵌入式Linux内核版本:2.6.39(基于Atmel提供的移植版修改)
嵌入式工具链:arm-linux-gcc 4.4.3
开环环境相关信息截图
1.2 下载解压源码
从官方网站www.sqlite.org下载源码包sqlite-autoconf-3071100.tar.gz,目前最新版本为3.7.11,解压到/home/cmmb/sqlite-autoconf-3071100,并建立一个同级目录/home/cmmb/sqlite-autoconf-3071100/arm,作为嵌入式设备的输出路径
# tar xvzf sqlite-autoconf-3071100.tar.gz –C /home/cmmb/
# mkdir /home/cmmb/sqlite-autoconf-3071100/arm
解压文件
解压源码包得到的文件
1.3 源码配置
进入建立的arm目录,再调用configure配置源码,指定输出目录为当前目录
# cd /home/cmmb/sqlite-autoconf-3071100/arm
# ../configure --host=arm-linux --prefix=/home/cmmb/sqlite-autoconf-3071100/arm --disable-tcl
编译器会开始自动检测编译环境和配置编译参数,可以查看输出的信息,如果一切顺利的话,会在 /home/cmmb/sqlite-autoconf-3071100/arm目录下生成一些相关文件: config.log、config.status、libtool、Makefile、sqlite3.pc
启动源码配置
生成的配置文件
1.4 编译安装
# make; make install
启动编译,并在编译完成后启动安装,若一切顺利无错误发生,则:
A) 会在/home/cmmb/sqlite-autoconf-3071100/arm/bin生成二进制可执行文件sqlite3
B) 会在/home/cmmb/sqlite-autoconf-3071100/arm/include生成头文件sqlite3.h,
C) 会在/home/cmmb/sqlite-autoconf-3071100/arm/lib生成libsqlite3.so.0.8.6动态库文件和libsqlite3.a静态库文件等。
这样就生成了用在arm-linux下的sqlite3和相关lib文件。
编译结果和输出文件
进入lib目录,用file命令查看生成的libsqlite3.so.0.8.6库文件信息,若显示的是未strip过的,则说明文件包含有调试信息。在产品使用中调试信息用不到,可以用strip命令将其去掉,执行文件大小也将小很多。命令如下:
# cd lib
# file libsqlite3.so.0.8.6
libsqlite3.so.0.8.6: ELF 32-bit LSB shared object, ARM, version 1 (ARM),not stripped
# arm-linux-strip libsqlite3.so.0.8.6
至此移植完成,将pc上交叉编译的bin和lib文件夹复制到嵌入式Linux文件系统中,测试sqlite:
# sqlite3
SQLite version 3.7.11
Enter ".help" for instructions
sqlite>
1.5 应用程序编译测试
准备一个最简单的C程序testdb.c,简单的执行打开数据库和关闭数据库的动作
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <sqlite3.h>
int main()
{
int res;
const char*dbfile="test.db";
sqlite3* db;
res=sqlite3_open(dbfile,&db);
if ( res != 0 )
{
printf("Open SQL Database Fail\n");
exit(EXIT_FAILURE);
}
res=sqlite3_close(db);
if ( res != 0 )
{
printf("Close SQL Database Fail\n");
exit(EXIT_FAILURE);
}
exit(EXIT_SUCCESS);
}
# arm-linux-gcc testdb.c -o testdb.out -lsqlite3 -L/home/cmmb/sqlite-autoconf-3071100/arm/lib -I/home/cmmb/sqlite-autoconf-3071100/arm/include
可以看到输出文件 testdb.out,用file命令查看显示为ARM程序文件,将其放到板子上运行测试。
1. 数据库简介
常用的数据库有Oracle,mySQL和SQLite,Oracle属于商业软件,需要购买,会增加产品成本;mySQL社区版是免费软件,但占用资源较多,且不易移植;SQLite是一个精简版的数据库软件,免费高效,支持绝大部分SQL指令。因此考虑到系统总体性能和资源占用,采用SQLite作为系统的数据库软件。
SQLite数据库特点有:
(1) 完全开源,无需独立的数据库引擎,直接嵌入到应用程序进程中,因此,通过API,应用程序可以直接操作它。
(2) 事务的处理是原子的,一致的,独立的,可持久化的(ACID),即使在系统崩溃和掉电后,也不用担心数据遭到破坏。
(3) SQLite数据库通过独占性与共享锁来实现事务的独立处理。
(4) 一个单独的跨平台的磁盘文件就能够存储一个数据库。
(5) 能支持2TB级的数据。
(6) 自包含,无外部依赖性。
(7) 支持NULL,INTEGER,NUMERIC,REAL,TEXT和BLOG等数据类型。
(8) SQLite数据库没有用户帐户的概念。数据库的权限仅依赖于文件系统。
2. 数据库移植
1.1 开发环境
硬件平台:VirtualBox虚拟机4.1.8 r75467
操作系统: Fedora14
Linux内核版本:2.6.35.14-106.fc14.i686
GCC编译器版本:4.5.1 20100924
嵌入式处理器:AT91SAM9x35
嵌入式Linux内核版本:2.6.39(基于Atmel提供的移植版修改)
嵌入式工具链:arm-linux-gcc 4.4.3
开环环境相关信息截图
1.2 下载解压源码
从官方网站www.sqlite.org下载源码包sqlite-autoconf-3071100.tar.gz,目前最新版本为3.7.11,解压到/home/cmmb/sqlite-autoconf-3071100,并建立一个同级目录/home/cmmb/sqlite-autoconf-3071100/arm,作为嵌入式设备的输出路径
# tar xvzf sqlite-autoconf-3071100.tar.gz –C /home/cmmb/
# mkdir /home/cmmb/sqlite-autoconf-3071100/arm
解压文件
解压源码包得到的文件
1.3 源码配置
进入建立的arm目录,再调用configure配置源码,指定输出目录为当前目录
# cd /home/cmmb/sqlite-autoconf-3071100/arm
# ../configure --host=arm-linux --prefix=/home/cmmb/sqlite-autoconf-3071100/arm --disable-tcl
编译器会开始自动检测编译环境和配置编译参数,可以查看输出的信息,如果一切顺利的话,会在 /home/cmmb/sqlite-autoconf-3071100/arm目录下生成一些相关文件: config.log、config.status、libtool、Makefile、sqlite3.pc
启动源码配置
生成的配置文件
1.4 编译安装
# make; make install
启动编译,并在编译完成后启动安装,若一切顺利无错误发生,则:
A) 会在/home/cmmb/sqlite-autoconf-3071100/arm/bin生成二进制可执行文件sqlite3
B) 会在/home/cmmb/sqlite-autoconf-3071100/arm/include生成头文件sqlite3.h,
C) 会在/home/cmmb/sqlite-autoconf-3071100/arm/lib生成libsqlite3.so.0.8.6动态库文件和libsqlite3.a静态库文件等。
这样就生成了用在arm-linux下的sqlite3和相关lib文件。
编译结果和输出文件
进入lib目录,用file命令查看生成的libsqlite3.so.0.8.6库文件信息,若显示的是未strip过的,则说明文件包含有调试信息。在产品使用中调试信息用不到,可以用strip命令将其去掉,执行文件大小也将小很多。命令如下:
# cd lib
# file libsqlite3.so.0.8.6
libsqlite3.so.0.8.6: ELF 32-bit LSB shared object, ARM, version 1 (ARM),not stripped
# arm-linux-strip libsqlite3.so.0.8.6
至此移植完成,将pc上交叉编译的bin和lib文件夹复制到嵌入式Linux文件系统中,测试sqlite:
# sqlite3
SQLite version 3.7.11
Enter ".help" for instructions
sqlite>
1.5 应用程序编译测试
准备一个最简单的C程序testdb.c,简单的执行打开数据库和关闭数据库的动作
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <sqlite3.h>
int main()
{
int res;
const char*dbfile="test.db";
sqlite3* db;
res=sqlite3_open(dbfile,&db);
if ( res != 0 )
{
printf("Open SQL Database Fail\n");
exit(EXIT_FAILURE);
}
res=sqlite3_close(db);
if ( res != 0 )
{
printf("Close SQL Database Fail\n");
exit(EXIT_FAILURE);
}
exit(EXIT_SUCCESS);
}
# arm-linux-gcc testdb.c -o testdb.out -lsqlite3 -L/home/cmmb/sqlite-autoconf-3071100/arm/lib -I/home/cmmb/sqlite-autoconf-3071100/arm/include
可以看到输出文件 testdb.out,用file命令查看显示为ARM程序文件,将其放到板子上运行测试。
相关文章推荐
- 走近复杂数据库计算型软件的设计与制作(1)-数据类型和默认值 推荐
- 走近复杂数据库计算型软件的设计与制作(2)—数据表的设计
- 记录Sqlserver2012附加Sqlserver2008的数据库出错的解决方案一、摘要 最近在实验里面用台式编写好了一个软件,想移植到家里的笔记本上。在附加数据的时候却出现了错误,具体也没有提示
- 数据库中“钱”数据类型如何设计?
- 数据库优化--数据设计篇
- 最近设计了一个生成asp代码的程序,同时也可以作为数据库管理查询的软件,有兴趣的朋友可以去下载!
- DBA成长之路数据库设计之软件开发周期
- noSQL数据库相关软件介绍(大数据存储时候,必须使用)
- 数据库修改预约数据后,软件无法刷新,需要退出pl/sql,
- 大型MIS软件的开发必须重视数据库设计
- 数据库设计软件EA
- 行政区划数据数据库的设计(一)
- 小温谈数据库优化--数据设计篇
- 行政区划数据数据库的设计(五)
- 行政区划数据数据库的设计(脚本)
- 希望大牛讨论 树状数据如何选择数据库和设计存储格式
- 关系数据库设计中数据字典设计例子
- 数据迁移:数据库软件升级10.2.0.4到10.2.0.5
- 数据库中根据数据一对一,一对多,多对多关系设计
- 数据仓库(八):数据仓库中数据库设计的基本模型对比--Inmon