sqlite是用c语言编写的的开源嵌入式数据库引擎。
它支持大多数的SQL92标准(支持sql语句),并且可以在所有主要的操作系统上运行。
sqlite由几个部分组成:SQL编译器,内核,后端,附件;sqlite通过利用虚拟机和虚拟数据库引擎,使调试,修改,扩展sqlite的内核变得更加方便,所有sql语句都被编译成易读的可以在sqlite虚拟机中执行的程序集。
值得一提的是,袖珍型的sqlite竟然可以支持高达2TB大小的数据库,每个数据库都是以单个文件的形式存在,这些数据以B-Tree的数据结构形式存储在磁盘上。
在事务处理方面,sqlite通过数据库级上的独占性和共享锁来实现独立事物的处理。这意味多个进程可以在同一时间从同一数据库读取数据,但只有一个可以写入数据。在某个进程或者线程想数据库执行些操作之前,必须获得独占锁。在获得独占锁之后,其他的读写操作将不会发生。
sqlite采用动态数据类型,当某个只插入到数据库时,sqlite将会检查它的类型,如果该类型与关联的列不匹配,sqlite则会尝试将该值转换成该列的类型,如果不能转换,则该值作为本身的类型存储,sqlite称这为“弱类型”,但有一个特例,如果是integer primary key,则其他类型不会被转换,会报一个“数据类型无法匹配”的错误。
概括来讲,sqlite支持NULL,INTEGER,REAL,TEXT和BLOB数据类型,分别代表空值,整型,浮点,字符串文本,二进制对象。