UnQLite鲜明的特色 Jun 01, 2013
以下页面枚举UnQLite数据库引擎
和Jx9嵌入式脚本语言
的鲜明特色。
UnQLite数据库引擎的劲爆特色
`无服务器`数据库引擎。 `事务化` (ACID) 数据库。 `零配置`。 `单一数据库文件`,不使用临时文件。 `跨平台`的`文件格式`。 UnQLite是一个自包含的C语言程序库,`无任何外部依赖`。 标准的`Key/Value`存储。 基于`Jx9`的`文档存储`(JSON)数据库。 支持`游标`,满足线性记录遍历。 `插件式`运行时可交换存储引擎。 支持`磁盘持久化`和`内存模式`的数据库。 内建强大的磁盘存储引擎,支持`O(1)`查询。 `线程安全`,完全可重入。 简单、清晰,很容易使用的`API`。 支持`TB(Terabyte)尺寸`的数据库。 使用fastJSON格式,将JSON文档存储于磁盘。 采用`BSD开源许可协议`。 用ANSI C编写,非常高的代码质量,只需要一个C编译器,即可在绝大多数的平台,包括受限的嵌入式设备,无修改的编译和运行。 合并:UnQLite和Jx9相关所有C源代码文件,都合并到`单一的文件中`。 很好的`在线支持`。
Jx9嵌入式脚本语言的劲爆特色
基于JSON的图灵完备的编程语言。 清晰和熟悉的语法,类似于C和JavaScript。 动态类型编程语言。 高效率的`字节码`编译器。 支持原生的`匿名函数`。 和C++一样的`函数重载` 全类型暗示。 64位整数运算。 原生支持`UTF-8`编码。 构建于超过50个的运算操作。 逗号表达式。 支持静态变量和常量。 基于丰富的标准库,超过312个函数和134个常量。 很容易绑定C/C++外部函数,以及外部常量。 高效和平台独立的字节码编译器。 内建HTTP请求解析器。 使用hashmap实现高效的JSON数组和对象。 没有致命的错误,即使调用了一个未定义的函数也不会`abort`掉Jx9脚本执行。 Jx9是100%的手工编码(没有Lex、flex、YACC,Lemon(SQLite采用的编译器生成器)等),用ANSI C编写,只需要一个C编译器,即可在绝大多数的平台,包括受限的嵌入式设备,无修改的编译和运行。 基于`高级引用计数`的`GC()垃圾回收` 非常小的内存占用。
更多细节,请查阅Jx9编程语言参考手册。
几个UnQLite十分重要特色的详细介绍
事务性的(ACID)数据库
一个事务性的数据库就是一个在其中所有变更及查询显得Atomic
(原子性)、Consistent
(一致性)、Isolated
(隔离性)和Durable(耐久性)(ACID)。UnQLite实现了序列化的事务,也就是原子性、一致性、隔离性)和耐久性,即使事务被程序崩溃
,操作系统崩溃
或电脑断电
中断。
无服务器数据库引擎
绝大多数NoSQL数据引擎(如MongoDB、Redis和CouchDB等),被作为独立的服务器进程而实现。想要访问数据的程序,通过某种进程间通信机制(典型的TCP/IP)和服务器通信,发送请求到服务器并收取返回结果。UnQLite和SQLite一样,都没有采用这种方式。采用UnQLite,想要访问数据库进程,直接读和写磁盘上的数据库文件。这里没有中间的服务器进程。
零配置的数据库引擎
使用UnQLite之前,无需进行安装。没有一个安装
过程。这里没有一个服务器进程需要启动
,终止
或配置
。也不需要一个管理员创建一个新的数据库实例或进行用户访问授权。UnQLite无需配置文件。无需做任何事情,以告知系统UnQLite正在运行。一次系统崩溃或掉电之后,也不要求采取任何行动以恢复数据库。这里没有任何故障排除。
单一数据库文件
一个UnQLite数据库,是一个单一的普通磁盘文件,可以位于目录层次结构的任何地方。只要UnQLite可以读取这个磁盘文件,就可以读取这个数据库中的任何数据。只要这个磁盘文件和所在目录是可读的,UnQLite就可以修改数据库中的任何内容。数据库文件,可以很容易的拷贝到USB内存棒或电子邮件共享。
跨平台的文件格式
UnQLite文件格式是跨平台的。在一个主机上写的数据库文件,可以拷贝和在不同架构的主机上使用。大端或小端,32位或64位都不是问题。所有的机器,使用一样的文件格式。
标准的K/V存储数据库引擎
UnQLite是,一个标准的key/value存储,与BerkeleyDB和LevelDB等相似。但是,拥有更加丰富的特性集,包括支持事务(ACID),并发读等。在KV存储下,键和值都被视为简单的字节数组,所以内容可以是任何东西,包括ASCII字符串、二进制对象和磁盘文件等。应用程序,可以通过接口API来访问KV层,包括unqlite_kv_store()、 unqlite_kv_append()、 unqlite_kv_fetch_callback()、 unqlite_kv_append_fmt() 和unqlite_kv_delete()等。
自包含的程序库
UnQLite是,一个自包含的C库,无外部依赖。它要求非常小的外部库或来自操作系统的支持。特别适合应用于嵌入式设备,也适用于应用程序内部(那些需要运行于大量的计算机,而无需修改各种配置)。
插件式`运行时可交换存储引擎
UnQLite运行于运行时可交换存储引擎(如,Hash, B+Tree, R+Tree, LSM等)。存储引擎,使用K/V对,即任意长度的字节数组,而且对内容没有任何限制。目前,UnQLite内建了两个K/V存储引擎:一个虚拟线性hansh存储引擎(Virtual Linear Hash:VLH),用于持久化数据到磁盘,拥有O(1)的查询时间。其二,是在内存模式数据库,采用hash表或红黑树。未来的版本,肯能内将LSM等存储引擎。