FastDB 应用开发指南(一)

FastDB是一款高性能的内存数据库系统,适用于读取密集型应用,支持事务、在线备份和自动恢复。它利用原子指令实现并发访问同步,假设数据全在内存中以优化查询速度。FastDB采用C++接口,利用类信息构建数据库表,支持类似SQL的查询语言,但不支持连接操作。它允许定义用户方法和自定义类型,提供结构、数组、指针和字符串处理功能。FastDB还支持位操作和用户定义的函数,提供灵活的查询和数据操作能力。
摘要由CSDN通过智能技术生成

FastDB 应用开发指南(一)

  

 

简介

FastDB 是一个高效率的内存数据库系统,具有实时性能和方便的

C++ 接口。FastDB 并不支持客户端/ 服务器结构,所有使用FastDB

数据库的应用程序都必须运行在同一台主机上。FastDB 为具有主导读

取访问模式的应用程序作了优化。通过消除数据传输的开销和使用高

性能的锁工具实现了查询执行的高速度。数据库文件和使用该数据库

的每一个应用程序占用的虚拟内存空间相映射。所以查询在应用程序

的任务中执行,不需要进行任务切换和数据传输。在FastDB中,通过

原子指令来实现对数据库并发访问的同步,对查询处理几乎不增加任

何开销。FastDB 假设整个数据库都在当前内存中,并且在这个假设的

基础上优化查询算法和结构。另外,数据库缓存管理几乎不会给FastDB

增加任何开销,同时FastDB也不需要在数据库文件和缓冲池中进行数

据传送。这就是为什么FastDB 比将所有数据放在缓冲池中的传统数据

库明显速度快的原因。

FastDB 支持事务、在线备份和系统崩溃之后的自动恢复。事务提

交协议基于一个影子根页算法,对数据库执行原子更新操作。恢复操

作执行起来非常快,给关键应用程序提供了高效率。另外,它还取消

了事务日志,提高了系统的整体性能,并且能够更加有效地使用系统

资源。

FastDB是面向应用程序的数据库,使用应用程序的类信息来构建数据

库的表。FastDB 支持自动系统赋值,只允许你在一个地方——你的应用

程序的类中,改变它们的值。FastDB为从数据库中提取数据提供了一个灵

活而方便的接口。使用类似于SQL 的语言来书写查询语句。这些非原子

字段、嵌套数组、用户自定义类型和方法、直接指向对象内部的指针等后

关系性能,简化了数据库应用程序的设计,并且使得它们更加高效。

虽然FastDB的优化是基于整个数据库都存放在机器的物理内存的这

个假设上的,我们依然可以将FastDB使用在那些大小超过系统物理内存

的数据库上。最后,标准操作系统的交换机制将会起作用。但是所有的

FastDB 的算法和结构的优化都是基于数据存放在内存中这个假设上的,

所以数据交换的效率不会很高。

查询语言

FastDB支持一种语法和SQL 非常类似的查询语言。FastDB使用的符

号更加流行于面向对象的编程中,而不是面向关系型数据库的编程中。

将表行看作是对象的实例,表是这些对象的类。跟SQL 不一样,FastDB

是面向对象的,而并不跟SQL一样是工作在一张二维表上的。所以每一

个查询的执行结果就是一个类的一组对象。FastDB 查询语言和标准的

SQL 的主要区别如下:

1、 在多张表之间没有连接,也没有嵌套的子查询。通常,查询是

从一张表中返回一个对象集。

2、 表的最小的列单元是标准的C 类型。

3 FastDB只有空指针,而没有NULL值。我完全同意C.J Date

于三值逻辑的评论,也赞同他使用默认值的建议。

4、 结构和数组可以用作记录成员。提供了一个特定的exists引用来

定位数组中的元素,

5、 不仅可以用无参用户方法来定义记录成员,也可以用它来定义

表记录(对象)。

6、 应用程序可以定义仅带一个简单字符型或数值型参数的用户

函数。

7、 支持对象之间的指针,并且自动支持反向指针。

8 start from follow by 的构造函数,实现了指针在递归记录之

间的移动。

9、 由于查询语言和C++类结合得比较紧密,关键字和语言的标识

符都区分大小写。

10、 不能进行整型和符点类型到字符串类型的隐式转换。如果需要

进行这种转换的话,必须显式地进行。

下面的和BNF 类似的符号规则规定了FastDB 查询语言的语法,显

示如下:

语法规则

select-condition ::= ( expression ) ( traverse ) ( order )

expression ::= disjunction

disjunction ::= conjunction

| conjunction or disjunction

conjunction ::= comparison

| comparison and conjunction

comparison ::= operand = operand

| operand != operand

| operand <> operand

| operand < operand

| operand <= operand

| operand > operand

| operand >= operand

| operand (not) like operand

| operand (not) like operand escape string

| operand (not) in operand

| operand (not) in expressions-list

| operand (not) between operand and operand

| operand is (not) null

operand ::= addition

additions ::= multiplication

| addition + multiplication

| addition || multiplication

| addition - multiplication

multiplication ::= power

| multiplication * power

| multiplication / power

power ::= term

| term ^ power

term ::= identifier | number | string

| true | false | null

| current | first | last

| ( expression )

| not comparison

| - term

| term [ expression ]

| identifier . term

| function term

| exists identifier : term

function ::= abs | length | lower | upper

| integer | real | string | user-function

string ::= ' { { any-character-except-quote } ('') } '

expressions-list ::= ( expression { , expression } )

order ::= order by sort-list

sort-list ::= field-order { , field-order }

field-order ::= [length] field (asc | desc)

field ::= identifier { . identifier }

traverse ::= start from field ( follow by fields-list )

fields-list ::= field { , field }

user-function ::= identifier

标识符是区分大小写的,以字符a-z, A-Z, '_' '$' 开始,只

能包含字符a-z, A-Z, 0-9, '_' '$',并且不能和SQL 的保留字

重复。

也可以使用标准的ANSI注释。忽略双连字号到行结尾部分的所有

字符。

FastDB扩展了ANSI 标准的SQL操作符,支持位操作。操作符and

or 不仅能够应用于布尔类型的操作数,而且能够应用于整型操作

数。把and or 操作符应用于整型操作数的计算结果是一个整型值,

该值的每一位都是由andor 位操作得出的结果。位操作可以用来高

效率地设置数据的每一位。同样,FastDB也支持整形和浮点型的幂操

作(x^y)。

结构

FastDB将结构作为记录成员来接收。通过使用标准的点操作符,可

概述FastDB是一个高效率的内存数据库系统,具有实时性能和方便的C++接口。 FastDB并不支持客户端/服务器结构,所有使用FastDB数据库的应用程序都必须运行在同一台主机上。FastDB为具有主导读取访问模式的应用程序作了优化。通过消除数据传输的开销和使用高性能的锁工具实现了查询执行的高速度。数据库文件和使用该数据库的每一个应用程序占用的虚拟内存空间相映射。所以查询在应用程序的任务中执行,不需要进行任务切换和数据传输。在FastDB中,通过原子指令来实现对数据库并发访问的同步,对查询处理几乎不增加任何开销。FastDB假设整个数据库都在当前内存中,并且在这个假设的基础上优化查询算法和结构。另外,数据库缓存管理几乎不会给FastDB增加任何开销,同时FastDB也不需要在数据库文件和缓冲池中进行数据传送。这就是为什么FastDB比将所有数据放在缓冲池中的传统数据库明显速度快的原因。   FastDB支持事务、在线备份和系统崩溃之后的自动恢复。事务提交协议基于一个影子根页算法,对数据库执行原子更新操作。恢复操作执行起来非常快,给关键应用程序提供了高效率。另外,它还取消了事务日志,提高了系统的整体性能,并且能够更加有效地使用系统资源。   FastDB是面向应用程序的数据库,使用应用程序的类信息来构建数据库的表。FastDB支持自动系统赋值,只允许你在一个地方——你的应用程序的类中,改变它们的值。FastDB为从数据库中提取数据提供了一个灵活而方便的接口。使用类似于SQL的语言来书写查询语句。这些非原子字段、嵌套数组、用户自定义类型和方法、直接指向对象内部的指针等后关系性能,简化了数据库应用程序的设计,并且使得它们更加高效。   虽然FastDB的优化是基于整个数据库都存放在机器的物理内存的这个假设上的,我们依然可以将FastDB使用在那些大小超过系统物理内存的数据库上。最后,标准操作系统的交换机制将会起作用。但是所有的FastDB的算法和结构的优化都是基于数据存放在内存中这个假设上的,所以数据交换的效率不会很高。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值