在Unix操作系统中,我们要对数据库了解很多,因为数据库很重要,今天,我们就来讲解Unix操作系统中一些数据库方面的工具。Unix操作系统提供多种数据库,其中许多是开放源码的,Unix操作系统一些数据库适用于各种应用程序,Unix操作系统一些数据库是专用的。但是,Unix操作系统大多数数据库是很大的独立应用程序(例如,MySQL 需要单独的安装、一些配置和它自己的守护进程),对于许多软件可能不需要使用这么复杂的数据库。
请考虑一个在桌面上使用的地址簿程序:它适合部署 MySQL 来存储姓名和电话号码吗?可能不适合。另外,如果应用程序要在非常小的设备或能力很有限的计算机上运行,那么应该怎么办?这类硬件可能不支持多处理、大量内存占用或对物理存储的大量需求。
显然,Unix操作系统可以使用嵌入式数据库。通常情况下,嵌入式数据库打包为库,与应用程序代码直接链接。这种解决方案让应用程序独立于外部服务,但是也要付出一定的代价:通常不能用 Structured Query Language (SQL) 表达查询。
SQLite 结合了这两方面的优势:这个软件很小,可以把它嵌入任何应用程序,同时可以用 SQL 查询数据。PHP 和 Ruby on Rails 使用 SQLite 作为默认的存储引擎,Apple iPhone 也是如此。
Unix操作系统为了构建 SQLite,需要从 SQLite 下载页面下载源代码集(由所有源代码组成的单一文件)、解压它并运行 ./configure && make && sudo make install。
- $ # As of March 2009, the latest version was 3.6.11.
- $ wget http://www.sqlite.org/sqlite-amalgamation-3.6.11.tar.gz
- $ tar xzf sqlite-amalgamation-3.6.11.tar.gz
- $ cd sqlite-3.6.11
- $ ./configure && make
- $ sudo make install
Unix操作系统构建过程生成一个库和相关联的应用程序编程接口 (API) 头文件,以及一个单独的命令行实用程序 sqlite3,它有助于研究特性。用数据库名启动 sqlite3 即可创建数据库。甚至可以在命令行上直接放上 SQL,这对于脚本编程非常有意义:
- $ sqlite3 comics.db "CREATE TABLE issues \
- (issue INT PRIMARY KEY, \
- title TEXT NOT_NULL)"
- $ sqlite3 comics.db "INSERT INTO issues (issue, title) \
- VALUES ('1', 'Amazing Adventures')"
- $ sqlite3 comics.db "SELECT * FROM issues"
- 1|Amazing Adventures
***个命令创建数据库(如果数据库还不存在的话)和一个表,这个表包含两列 —— 期号和标题。Unix操作系统第二个命令插入一行,***一个命令显示表的内容。
SQLite 提供触发器、日志记录和序列。SQLite 还是无类型的,除非您指定类型。例如,这里声明的 issues 表没有类型,但是仍然可以正常工作:
- $ sqlite3 comics.db "create table issues (issue primary key, title)"
- $ sqlite3 comics.db "INSERT INTO issues (issue, title) \
- VALUES (1, 'Amazing Adventures')"
- $ sqlite3 comics.db "SELECT * FROM issues"1|Amazing Adventures
没有类型是一个特性,而不是 bug,它有许多应用。大家可以看出Unix操作系统中,SQLite能够适合大多数场合的数据库。这给我们带来了很大的方便。让我们一起运用它吧。
【编辑推荐】