Sybase数据库引擎运行方法简介

时间:2023年05月13日

/

来源:一颗奶膘

/

编辑:本站小编

收藏本文

下载本文

下面给大家分享Sybase数据库引擎运行方法简介,本文共7篇,欢迎阅读!本文原稿由网友“一颗奶膘”提供。

篇1:Sybase数据库引擎运行方法简介

1.以 Administrator 身份登录到 Windows NT.

您需要 Administrator 权限来创建、启动和停止服务,

2.打开命令提示符。

3.使用 dbsvc 实用程序创建服务,限制如下:

必须使用 -a 开关来指定 sybase 帐户,使用 -p 开关来指定它的口令。

不能使用 -as 或 -i 开关。

对于个人数据库服务器,可执行文件的名称应当是:

C:\\Program Files\\Sybase\\SQL Anywhere 9\\win32\\dbeng9.exe

对于数据库服务器则是:

C:\\Program Files\\Sybase\\SQL Anywhere 9\\win32\\dbsrv9.exe

您必须使用下列引擎参数:

◆ -n engine name

◆ -sc

◆ -gd DBA

◆ -gk DBA

◆ -gl DBA

◆ -gu DBA

◆ -x namedpipes(TDS=NO)

4.输入要运行的任何数据库文件的完整路径。

该路径应当采取 数据库文件夹 \\ 文件名 .db 格式,其中数据库文件夹是 C2 数据库文件夹,其中包括所有其它相关参数。

例如,下列命令行可创建名为 asa_svc 的手工启动的服务,并且引用网络服务器,

它在 sybase 帐户下运行,其口令为sybase_password.它执行下列命令:

C:\\Program Files\\Sybase\\SQL Anywhere 9\\win32\\dbsrv9.exe -n asa_c2 -sc -gd DBA -gk DBA

-gl DBA -gu DBA -x namedpipes(TDS=NO)

database-folder\\c2test.db

dbsvc -a sybase -p sybase_password -s manual

-t network -w asa_svc C:\\Program Files\\Sybase\\

SQL Anywhere 9\\win32\\dbsrv9.exe -n asa_c2 -sc

-gd DBA -gk DBA -gl DBA -gu DBA

-x namedpipes(TDS=NO) database-folder\\c2test.db

5.要启动和停止该服务,请从控制面板中运行 “Windows NT 服务管理器 ”.从 “ 开始 ” 菜单,选择 “ 设置 ”→“ 控制面板 ”,然后双击 “ 服务 ”。

刚创建的服务出现在 Adaptive Server Anywhere - svc 下,其中 svc是您在 dbsvc 命令行上指定的服务名。

6.使用 “ 启动 ” 和 “ 停止 ” 按钮来启动和停止服务。

篇2:Sybase数据库简介数据库

一、Sybase数据库简介 1.版本 1984年,MarkB.Hiffman和RobertEpstern创建了Sybase公司,并在1987年推出了Sybase数据库产品,SYBASE主要有三种版本,一是 UNIX 操作系统下运行的版本,二是NovellNetware环境下运行的版本,三是 Windows NT环境下运行的版本。

一、Sybase数据库简介

1.版本

1984年,Mark B. Hiffman和Robert Epstern创建了Sybase公司,并在1987年推出了Sybase数据库产品。SYBASE主要有三种版本,一是UNIX操作系统下运行的版本,二是Novell Netware环境下运行的版本,三是WindowsNT环境下运行的版本。现在最新版本已经是 12.5,在各主流Unix操作系统中均有广泛应用。IBM AIX,HPunix,Digital Unix,Sun solaris等等。

2.Sybase数据库的特点

(1)它是基于客户/服务器体系结构的数据库

一般的关系数据库都是基于主/从式的模型的。在主/从式的结构中,所有的应用都运行在一台机器上。用户只是通过终端发命令或简单地查看应用运行的结果。 而在客户/服务器结构中,应用被分在了多台机器上运行。一台机器是另一个系统的客户,或是另外一些机器的服务器。这些机器通过局域网或广域网联接起来。客户/服务器模型的好处是:

● 它支持共享资源且在多台设备间平衡负载

● 允许容纳多个主机的环境,充分利用了企业已有的各种系统

(2) 它是真正开放的数据库

由于采用了客户/服务器结构,应用被分在了多台机器上运行。更进一步,运行在客户端的应用不必是Sybase公司的产品。对于一般的关系数据库,为了让其它语言编写的应用能够访问数据库,提供了预编译。Sybase数据库,不只是简单地提供了预编译,而且公开了应用程序接口DB-LIB,鼓励第三方编写DB-LIB接口。由于开放的客户DB-LIB允许在不同的平台使用完全相同的调用,因而使得访问DB-LIB的应用程序很容易从一个平台向另一个平台移植。

(3) 它是一种高性能的数据库

Sybase真正吸引人的地方还是它的高性能。体现在以下几方面:

● 可编程数据库

通过提供存储过程,创建了一个可编程数据库。存储过程允许用户编写自己的数据库子例程。这些子例程是经过预编译的,因此不必为每次调用都进行编译、优化、生成查询规划,因而查询速度要快得多。

● 事件驱动的触发器

触发器是一种特殊的存储过程。通过触发器可以启动另一个存储过程,从而确保数据库的完整性。

● 多线索化

Sybase数据库的体系结构的另一个创新之处就是多线索化。一般的数据库都依靠操作系统来管理与数据库的连接。当有多个用户连接时,系统的性能会大幅度下降。Sybase数据库不让操作系统来管理进程,把与数据库的连接当作自己的一部分来管理。此外,Sybase的数据库引擎还代替操作系统来管理一部分硬件资源,如端口、内存、硬盘,绕过了操作系统这一环节,提高了性能。

3.Sybase数据库的组成

Sybase数据库主要由三部分组成:

(1) 进行数据库管理和维护的一个联机的关系数据库管理系统Sybase SQL Server;

Sybase SQL Server是个可编程的数据库管理系统,它是整个Sybase产品的核心软件,起着数据管理、高速缓冲管理、事务管理的作用。

(2) 支持数据库应用系统的建立与开发的一组前端工具Sybase SQL Toolset;

ISQL是与SQL Server进行交互的一种SQL句法分析器。ISQL接收用户发出的SQL语言,将其发送给SQL Server,并将结果以形式化的方式显示在用户的标准输出上。

DWB是数据工作台,是Sybase SQL Toolset的一个主要组成部分,它的作用在于使用户能够设置和管理SQL Server上的数据库,并且为用户提供一种对数据库的信息执行添加、更新和检索等操作的简便方法。在DWB中能完成ISQL的所有功能,且由于DWB是基于窗口和菜单的,因此操作比ISQL简单,是一种方便实用的数据库管理工具。

APT是Sybase客户软件部分的主要产品之一,也是从事实际应用开发的主要环境。APT工作台是用于建立应用程序的工具集,可以创建从非常简单到非常复杂的应用程序,它主要用于开发基于表格(Form)的应用。其用户界面采用窗口和菜单驱动方式,通过一系列的选择完成表格(Form)、菜单和处理的开发。

(3) 可把异构环境下其它厂商的应用软件和任何类型的数据连接在一起的接口Sybase Open Client/Open Server,

通过Open Client的DB-LIB库,应用程序可以访问SQL Server。而通过Open Server的SERVER-LIB,应用程序可以访问其它的数据库管理系统。

二、SYBASE有关概念

Sybase SQL Server是一个多库数据库系统。这些数据库包括系统数据库和用户数据库。 而不论是系统数据库还是用户数据库,都建立在数据库设备上。

1. 数据库设备

所有的数据库都创建在数据库设备上。所谓数据库设备,不是指一个可识别的物理设备,而是指用于存储数据库和数据库对象的磁盘原始分区或操作系统文件。增加一个新的数据库设备时,必须对这些设备“初始化”。初始化的过程就是将物理磁盘、磁盘分区或操作系统文件变为SYBASE数据库可以识别的设备。初始化数据库设备使用DISK INIT命令:

DISK INIT

NAME=设备名,

PHYSNAME=物理设备名,

VDEVNO=虚拟设备号,

SIZE=块数

其中,NAME指数据库设备名,此名将用于CREATE DATABASE和ALTER DATABASE命令。PHYSNAME是原始磁盘分区或操作系统文件名。VDEVNO是数据库设备的标识号,在SQL Server中,它必须是唯一的。SIZE的单位是2K的块,对于新创建的数据库,最小的SIZE是model数据库的尺寸,即1024个2K的块(2M)。

例如:/*将/dev目录下400M的物理设备初始化为SYBASE的数据库设备tele114_log01*/

1>disk init

2>name=“tele114_log01”,

3>physname=“/dev/rtelelog”

4>vdevno=4

5>size=204800 /*2Kbyte*204800=400Mbyte*/

6>go

2、段

数据库设备从逻辑上被划分为数据库段以允许将某一特定的对象放置在指定的段上(创建对象时指定),一数据库设备可拥有多达192个段,一段可使用255个逻辑设备上的存储空间。当用户创建一个数据库时,SQL SERVER 会自动在该数据库中创建三个段: SYSTEM、LOGSEGMENT 、DEFAULT,这三个段分别用来存储数据库的系统表、事务日志和其他数据库对象 。

在数据库中创建段的步骤是:

x 先用Disk init 初始化物理设备

x 通过使用Create database 和alter database 的on 子句,使数据库设备对数据库可用,于是新设备自动增加到数据库的default 和system段。

一旦数据库设备存在并对数据库可用,使用存储过程Sp_addsegment 定义数据库的段。语法如下:

Sp_addsegment 段名,数据库名,设备名

3、 系统数据库

安装Sybase数据库时自动生成的下列系统数据库:

● 主数据库master;

● 模型数据库model;

● 系统过程数据库sybsystemprocs;

● 临时数据库tempdb。

也可选择下列数据库:

●安全审核数据库sybsecurity;

● 示例数据库pubs2;

● 命令语法数据库sybsyntax。

(1) master数据库

包含许多系统表和系统过程,从总体上控制用户数据库和SQL Server的操作,构成了SYBASE系统的数据字典。MASTER数据库主要记录信息为:

● 登录帐号(SQL服务器用户名);syslogins,sysremolelogins

● 正在执行的过程;sysprocesses

● 可修改的环境变量;sysconfigures

● 系统错误信息;sysmessages

● SQL服务器上每个数据库的信息;sysdatabases

● 每个数据库占用的存储空间;sysusages

● 系统上安装的磁带及磁带信息;sysdevices

● 活动锁信息;syslocks

共3页: 1 [2] [3] 下一页

原文转自:www.ltesting.net

篇3:SYBASE ASA数据库恢复方法数据库

SYBASE ASA 数据库 当遇到不正常关机时,很容易出现异常,如:表或索引出错,麻烦的是用drop table t_name删除表时数据库就会DOWN下,下面是我常用的两种恢复方法: SYBASE ASA数据库恢复方法 SYBASE ASA数据库当遇到不正常关机时,很容易出现异常,如:表或

SYBASE ASA数据库当遇到不正常关机时,很容易出现异常,如:表或索引出错,麻烦的是用drop table t_name删除表时数据库就会DOWN下。下面是我常用的两种恢复方法:

SYBASE ASA数据库恢复方法

SYBASE ASA数据库当遇到不正常关机时,很容易出现异常,如:表或索引出错,麻烦的是用drop table t_name删除表时数据库就会DOWN下。下面是我常用的两种恢复方法:

一、用备份数据库恢复

1、用备份数据库启动

2、翻译出错数据库的日志(可能有多个文件)

3、按顺序执行翻译出的日志文件,read 文件

二、没有备份数据库

现象:set rowcount 10

select * from table_name时数据down下

用dbvalid检查此表时报错

处理方法:

1、删除table_name的发布、视图

2、dbunload -c “uid=dba;pwd=sql;dbf=d:\\sybdata\\dbname.db” -e table_name -an d:\\db_new\\dbname.db“

3、用新数据库启动

4、重建table_name表(没有数据)

51CTO.com整理 (责任编辑:铭铭)

原文转自:www.ltesting.net

篇4:SYBASE ASA数据库恢复方法

SYBASE ASA数据库当遇到不正常关机时,很容易出现异常,如:表或索引出错,麻烦的是用drop table t_name删除表时数据库就会DOWN下,下面是我常用的两种恢复方法:

一、用备份数据库恢复:

1、用备份数据库启动

2、翻译出错数据库的日志(可能有多个文件)

3、按顺序执行翻译出的日志文件,read 文件

二、没有备份数据库

现象:

set rowcount 10

select * from table_name时数据down下

用dbvalid检查此表时报错

检查处理方法:

1、删除table_name的发布、视图

2、dbunload -c ”uid=dba;pwd=sql;dbf=d:\\sybdata\\dbname.db“ -e table_name -an d:\\db_new\\dbname.db”

3、用新数据库启动

4、重建table_name表(没有数据)

篇5:开源空间数据引擎MsSQLSpatial简介数据库

MsSQLSpatial是一个 开源 空间数据引擎项目,本文通过介绍这一项目的同时,也对基于MS SQLServer CLR Integration(公共语言运行时集成,下文简称“CLR集成”)技术实现一个空间数据引擎及优缺点做一些简单分析, MsSQLSpatial项目 这个项目遵从于OGC S

MsSQLSpatial是一个开源空间数据引擎项目,本文通过介绍这一项目的同时,也对基于MS SQLServer 2005 CLR Integration(公共语言运行时集成,下文简称“CLR集成”)技术实现一个空间数据引擎及优缺点做一些简单分析。

MsSQLSpatial项目

这个项目遵从于OGC Simple Features Specification for SQL Revision 1.1,基于两个著名的.NET平台下的开源GIS项目NetTopologySuite(NetTopologySuite是JTS Topology Suite的C#/.net版本,简称NTS)和SharpMap(一个基于.net 2.0的Map渲染类库)来构建,所以划分为NTS、SharpMap和SqlClr三大模块,SqlClr这部分为CLR集成实现代码。主要实现了基于SQLServer 2005 CLR集成的空间数据库相关封装。当前提供了一个命令行工具来支持shape文件和PostGIS的数据导入。

开发语言:C Sharp 2.0。

目前版本:Release 0.1.RC2。

许可协议:GNU LESSER GENERAL PUBLIC LICENSE Version 2.1。

官方网址:www.codeplex.com/Wiki/View.aspx?ProjectName=MsSQLSpatial。

MsSQLSpatial官方给的说法是一个MS SQLServer2005空间扩展(Spatial Extensions),确切地说它应该是一个专属于SQLServer2005的空间数据引擎。所谓的空间数据引擎,其实就是基于关系型数据库的空间数据库技术的软件实现,实质上是个封装了空间领域知识的中间件,GIS等应用层通过这个中间层与关系型数据库交互。

典型的莫过于GIS开发者都比较熟悉的ESRI ArcSDE,Supermap SDX+等等。那么,这个MsSQLSpatial与以前的空间数据引擎差别在哪里?下文我们将讨论这个问题。(实际上Oracle10g也支持CLR集成,但在此不进行相关比较。)

基于CLR集成的空间数据引擎

显而易见,每一次数据库技术与数据访问技术的进步发展都会带动空间数据存储管理解决方案的进步与发展,就好像关系型数据库上BLOB数据类型的支持才使得空间数据库实现了空间特征数据与属性数据一体化存储管理。

关于MS SQLServer 2005有哪些新特性,在这里笔者就不再赘述,相信微软已做了大量宣传。

且不管广告如何,作为一个与整个.NET平台紧密集成的全新一代的数据库产品,我们更关心它的新特性会给GIS最重要的组成部分之一“空间数据库技术”带来什么样的解决方案,

这个关键,就是它的“CLR集成”。通过宿主Microsoft.net Framework 2.0公共语言运行时 (CLR),可以在SQLServer 2005上利用.net Framework类库和任何如C#、VB、.net、C++/CLI等CLR语言来开发数据库应用,扩展用户自己的类型系统和聚合函数。许多之前在SQLServer 上用T-SQL或扩展存储过程等编程模型难以实现的或无法实现的任务现在可以用托管代码来完成,譬如几何计算这样具有复杂逻辑的计算密集型任务。

在空间数据库的设计问题上,没有CLR集成技术的RDBMS例如SQLServer2000,在涉及查询脚本的空间表达时就出现了问题,T-SQL语句难以做到空间关系和属性特征联合查询。

因此,空间索引和以二进制方式存储的空间特征数据都必须通过数据访问接口获取出来映射到空间数据引擎这个中间层还原成空间对象才能完成空间关系的判断。还有点不妙的就是每次涉及空间分析的操作都会从空间数据库服务器中取出一部分冗余的结果集,如果在I/O密集的情况下则更糟。

SQLServer 2005上,非常显著的一个特点是,这类基于CLR集成的开发的.NET应用程序集是直接部署在数据库服务器上,SQLServer2005在进程内宿主.net CLR,外部GIS应用层可直接与空间数据库交互时使用T-SQL语句操作。

我们来看MsSQLSpatial的解决方案, MsSQLSpatial用CLR表值函数封装了一组简单而有效的空间索引实现,在这些CLR表值函数中实习了OGC简单特征规范定义的用于描述各种对象的空间关系的空间关系谓词,由NTS类库提供底层的空间对象和空间关系算子,在数据库进程内部直接完成空间查询操作。

SQL Server 2005数据库CLR集成技术代码和数据的紧密结合使我们能够充分利用服务器的处理能力。而且因为它减少了数据层和中间层之间的流量,CLR 函数也可以利用到SQLServer 2005查询处理器的并行和优化功能。但如果在空间数据引擎中完全封装,这无异于把密集计算的任务完全放在空间数据库服务器上,在空间数据库的I/O量与计算资源之间如何取舍,这是值得斟酌之处。

开源空间数据引擎MsSQLSpatial体系架构

MsSQLSpatial展望

MsSQLSpatial是开源GIS网站Freegis.org于8月份加入的一个新开源项目,更新比较频繁。正由于其刚刚开始,可能作者忙于调整架构和实现相关应用,所以相关文档和介绍相当的少,对其长远的发展规划和定位还不得而知。

这个新生的开源项目目前还比较简单,没有提供构建高级空间索引的能力,进行空间查询时其仅是对最小外包矩形(MBR)比较后获得粗略子集后就通过一个委托调用NTS中空间对象的操作算子进行精确的匹配计算以获得目标结果集。

MsSQLSpatial目前也没有栅格数据相关部分,要达到海量矢量/栅格管理,拓扑关系支持、长事务、日志、多用户并发、权限控制等商业层次要求的空间数据引擎还有很长的距离。不过在这个技术体系框架之下,这个的紧密捆绑目前最好的商业关系型数据库之一与采用先进的数据库编程模型的开源空间数据库项目,还是很具发展潜力的,我们期待其后继版本能够带来更多的东西。

【责任编辑:火凤凰 TEL:(010)68476606-8007】

原文转自:www.ltesting.net

篇6:嵌入式Java运行平台数据库引擎的应用研究

嵌入式Java运行平台数据库引擎的应用研究

摘要:介绍某嵌入式Java运行平台的总体框架;在此基础上,详细讨论为该平台开发的数据库(DB)引擎组件的框架和结构组成,描述该组件实现的SQL子集和数据表达方式以及逻辑算法的设计思路;提出该组件今后的改进设想。

关键词:数据库引擎 Java 嵌入式系统

引言

随着嵌入式系统CPU硬件从8位到32位的发展,嵌入式系统软件的开发环境也得到迅猛的发展,编程语言从10多年以前的汇编为主流发展到现在C、C++、Java为主流。另外,面向对象设计技术、组件技术等在嵌入式系统软件设计中的应用也日益引起人们的重视。

在嵌入式系统软件开发领域,Java是一门较新的异军突起的编程语言。其优点是语言本身简洁优美,完全按照面向对象思想设计,并且语言引入许多较为先进的特性,如多线程、自动内存管理和垃圾回收,非常适合于大规模复杂软件系统的开发。其不足点是与硬件结合不够紧密,同时代码运行速度较慢。此外,对于内存的使用,程序难于管理和控制。

由于采用Java编程具有如上所述的众多优点,越来越多的嵌入式系统采用Java技术来构造软件系统。本文在介绍基于日本某自动售货机产品的控制板的Java运行平台基础上,详细讨论笔者为其平台开发的DB引擎的组成和设计思路。

(本网网收集整理)

1 Java运行环境平台

图1所示为Java运行环境的总体框架示意图。本系统为克服Java的解释执行机制所引起的执行速度慢的问题,在硬件上采用了Sun公司开发的Pico Java芯片。它能够直接执行Java的二进制代码,使Java的执行速度提高一个数量级以上。在硬件层的上面是OS层,本系统采用的是ITRON(日本东京大学坂村键教授设计的一种嵌入式操作系统,虽然在日本以外的市场影响不大,但在日本本地市场,占有率达90%以上)。由于ITRON规格制定得比较早,并且为兼顾低端嵌入式应用的场合,ITRON总体上功能比较简单,并未把诸如TCP/IP、文件系统等内容包含在其里面,因此与嵌入式Linux等不一样的是,TCP/IP、文件系统是以独立的组件形式存在的。在OS层的上面是JVM层。与其它一般Java虚拟机不同的是,本系统的Java执行代码不需要由JVM解释执行,而是由CPU硬件直接执行。在JVM的上层是自动售货机的基础平台类库和公共组件层。本文介绍的DB引擎组件正是处于这一层。该层的上面是应用程序层,用于实现自动售货机的各种控制、管理机能。

2 嵌入式系统DB引擎

2.1 DB引擎组件的引入

众所周知,在台式机领域,DB是一个十分关键的基础软件。以往嵌入式系统的软件可能更侧重于与硬件的交互与控制,但随着对嵌入式系统功能需求的日益复杂化,嵌入式系统软件中,信息、数据的保存与管理的比重也日益增加。在这样的背景下,嵌入式系统软件开发中,通过引入DB组件,对实现软件整体框架结构的组件化与简单化,有着十分明显而重要的意义。

2.2 DB引擎组件的总体框架

如图2所示,将整个DB组件设计为3层结构,分别为JDBC接口层、SQL解释层和动作执行层。这3层之间呈单向依赖关系。也就是说,SQL解释层依赖于动作执行层,但动作执行层不依赖于其上面的两层,可以单独存在而直接被使用。如果用户以使用方便为主要目的,可采用完全配置方式,应用程序通过JDBC接口层存取数据。反之,如果用户对空间和效率要求较高,可仅配置动作执行层组件,应用程序直接调用动作执行层的API进行数据的检过和更新等操作。

(1)JDBC接口层

如前文所述是可选组件,旨在为应用程序提供一个标准的DB调用接口。

(2)SQL解释层

本DB组件实现的SQL解释层,只实现了标准SQL的一个小子集,主要完成select、delete、insert、update、create table、drop table等功能。其中数据操作语句(select、delete、insert、update)的解释要点之一是where条件子句的解释执行,类似于数学表达式求值算法。本文采用简单直观的“算符优先法”。该算法使用两个工作栈,一个称作OPTR栈,用以寄存运算符;另一个称作OPND栈,用以寄存操作数或运算结果。算法的基本思想是:

①首先置操作数栈为空,表达式起始符“#”为运算栈的栈底元素;

②依此读入表达式中每个Token。若是操作数,则进OPND栈adk是运算符,则和OPTR栈的栈顶运算符比较优先权后作相应操作,直至整个表达式求值完毕(即OPTR栈的栈顶元素和当前读入的Token均为“#”。

文实现的SQL子集描述如下:

预定义

:=<日期>

:=

:=[,[,[…]]]

:=[,[…] ]]

:= =│==│!=││>│>=│<│<=

:=[,[,[…]]]

<统计函数名>:=MIN│MAX│COUNT│SUM

<统计函数>:=<统计函数>(

<统计list>:=<统计函数>,[,<统计函数>[,<统计函数>[…]]]

<数据类型>:=INT│UNMBER│CHAR│DATE

:=文递归定义式

:=(

:=NOT

:=OR

:=AND

SQL文定义式

①SELECT*|FROM

[WHERE][ORDER BY[ASC|DESC]]

②SELECT<统计list>FROM

[WHERE]

③UPDATE

SET[WHERE]

④INSERT INTO

[()]VALUES()

⑤DELETE FROM

[WHERE]

⑥CREATE TABLE

(<数据类型>[,<数据类型>[,<数据类型>[…]]])

⑦DROP TABLE

注:|表示多选个,表示某定义项目,[]表示可选项目,…代表循环省略表示。

(3)动作执行层

动作执行层是整个DB组件的核心和关键,因为所有的DB操作最终都由该层完成,同时用户也可以跳过上面的两层,直接调用该层的API,以实现相同的数据操作功能。下面介绍其主要设计要点和思路。

2.3 数据的表达与存储

由于嵌入式系统的资源十分有限,不能引入复杂的算法和数据存储格式,同时由于Java对二进制数据的处理十分不便,本文最终采用CSV格式来保存表数据。其要点是:

①各字段数据之间采用「,」分开;

②如果字段数据本身包含有「,」,则将整个字段数据用引号括起来;

③如果字段数据本身包含有引号「”」,则将引号「”」改写为两个重叠的引号「””」,依次类推。其次,每个记录占文本文件的个行,每一个数据表与一个物理数据文件一一对应。

采用这种方式处理的优点是:

①全部数据都是采用字符串保存,Java处理起来十分方便;

②对不定长字段的保存处理与定长字段处理统一,不需要额外的附加处理,而且存储效率高;

③对多字节文字的处理程序不需要额外的编码转换处理,由

JVM平台本身的功能可以自动完成。

当然,采用这种处理方式也存在其不足之处:

①由于在数据文件中,每条记录的长度不定,数据即使局部更新,也必须重写整个文件;

②由于同样原因,单条记录的.检索难于直接定位,而必须读入整个数据文件。

为弥补由此产生的性能下降,本文采用数据Cache加以克服。也就是说,尽可能将数据缓存在内存中,通过减少对物理文件的读写操作来提高数据的性能。

2.4 多线程数据存取的同步与互斥

在Java虚拟机环境下,没有多进程的概念,但对于多任务的处理提供了多线程的手段。本DB引擎组件是公共组件,供上层多个应用程序组件共同使用。由于上层的每个应用程序组件本身由一个或数个线程来执行,因此,DB引擎组件必须考虑多个线程同时存取某个数据时可能引起的冲突问题。对于该问题的解决办法,一般是采用DB锁定的方法。关于DB锁定,进一步细分的话,可区分为读锁和写锁;根据锁定粒度的粗细可分为按表锁、按Page锁、按记录锁等,不一而足。

为设计和实现的简单起见,本DB引擎组件提供按表锁定的方式,同时不区分读写锁之间的区别。这样,大大简化了SQL语句的分析和处理过程,并且可以直接把锁定操作与表的open操作相关联,锁解除与表的close操作相关联。实现时,对应表对象Table的每一个实例,设置一个field变量,用于保存锁定状态,再利用Java语言提供的synchronized手段同,可以较为方便地实现数据表的锁定功能。代表示例如下:

//表锁定。为了避免死锁,有超时判断逻辑

synchronized void lockthrows DBError{

long t2,t1;

t1=System.currentTimeMillis();

//由于可能出现在wait语句被唤醒而却得不到表锁的情况,为提高超时逻辑判断精度,采用循环

while(isLocked){

try{

wait(DBError.TIMEOUT/10);

}catch(Exception e){e.printStackTrace();}

//超时判断

t2=System.currentTimeMillis();

if(t2-t1>DBError.TIMEOUT)break;

}

//发生超时退出循环情况,抛出例外

if(isLocked){

throw new DBError(DBError.TIMEOUT_ERR,name);

}

//设定锁定标志

isLocked=true;

}

//表打开操作

//参数ro只读打开标志

void open(Boolean ro)throws DBError{

lock();

readOnly=ro;

//表数据读入

load();

}

//表关闭操作(同时释放锁)

public synchronized void close() throws DBError{

if(isLocked==false)return;

//关闭前,保存数据

if(isDirty)save();

if(isUnload)unload();

//释放锁,通知其它等待线程

isLocked=false;

notify();

}

图3 DB引擎组件主要类的关系

2.5 DB组件实现的结构设计

图3所示为DB引擎组件的主要类之间的关系。其中,Database为数据库类,用于描述和管理整个数据库对象Table为数据表类,用于描述和管理表对象;TableData用于描述和管理保存表数据的物理介质(文件);Field为字段类,用于描述和管理字段类型信息;Record为记录类,描述一条数据记录。为简化处理,本组件将Database类设计为singleton模式,即本组件只能创建一个Database实例。这对于嵌入式系统来说,大部分场合已经足够。与数据库的一般物理概念相对应,1个Database实例包含n个Table实例,1个Table实例包含n个Field实例。同时,1个Table实例包含1个TableData实例,1个TableData实例包含n个Record实例。

Connection类用于管理用户访问数据库的会话(Session)过程。对应一个用户的一次会话过程,生成一个Connection实例。Connection类对象保存着当前Session打开的Table列表,当用户提交执行某SQL语句而需要锁定某个Table时,系统首先检查该表是否已经在当前Session已打开的Table列表中。如果已经被打开,则不需要进行重复的锁定操作,直接反回对应的Table对象实例。反之,如果尚未包含在打开的Table列表中,表明当前Session尚未打开和锁定该表,必须执行该表的打开和锁定操作(如果该表已被其它Session打开,则必须等待到其它Session翻放该表为止)。

本DB组件还支持commit与rollback事务处理。能够在如此微小的DB组件实现事务处理,主要得益于上述的Session管理框架。在Table类commit与rollback处理基础上,当一个Session执行commit或rollback操作时,对包含在打开列表中的每个Table实例,调用执行相应的commit或rollback处理即可。

3 结语与展望

本DB组件已实际运行了大约两年时间。这期间除了对该组件进行一些功能追加以外,主体框架上基本保持不变,从而在一定程序上表明了该设计框架的可行性和合理性。该组件编译以后,class文件形成的jar包大小约为68KB,短小精度悍,便于使用。当然,该DB组件目前仍然存在一些不足:首先,较为关键的一点是速度问题。一直以来,Java的执行速度问题就是受批语的缺点所在,因此采用它实现自然也避免不了这人瓶颈。今后改进的思路之一是,将其中Java处理效率不高的部分移出Java,采用C实现;二者通过JNI手段加以连接,以提高总体的运行速度。第二点需要改进的地方是表锁定的粒度问题。由于目前只能整个表进行锁定,并且不区分读锁定与写锁定,因此粒度较粗。虽然这样实现起来较为简单,但在多任务处理环境中可能增加不必要的时间等待。最后,JDBC接口的实现目前还不完全,需要加以完善。

篇7:修改Sybase数据库sa密码的方法

问题描述:

在UNIX及某些系统内不能启动Sybase Center,那么在这种情况下怎样修改sa密码呢,同时如果我们不需要密码时也可以使用该方法将sa密码置为空

解决方案:

$isql -Usa -P1222 -SSYBASE

1>sp_configure “upgrade version”

2>go

#记录打印的版本号,我的系统版本好是11920 (sybase 11.9.2)

1>sp_configure “upgrade version”,492

2>go

#更改版本号为492

1>sp_password '123456',NULL,sa

2>go

#修改密码将123456密码置为空

1>sp_configure “upgrade version”,11920

2>go

#更改版本号为原来的版本号

SYBASE ASA数据库恢复方法数据库

在Windows NT上手动卸载Sybase Server数据库

地藏经简介与诵读方法

远程管理sqlserver的注册方法数据库教程

我国高速公路运行态势分析方法探讨

下载Sybase数据库引擎运行方法简介(整理7篇)
Sybase数据库引擎运行方法简介.doc
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档
热门文章
    猜你喜欢