简单数据存取(通用7篇)
简单数据存取 篇1
软件中数据保存方式通常使用数据库和文本文件。对于数据规模较大, 结构复杂, 存取频繁的软件而言, 使用数据库是最佳选择。对于数据规模不大, 结构简单, 常常读取和追加方式操作的软件而言, 选择文本文件存取数据比较便捷。目前, 大多数小型应用软件都采用文本文件保存数据, 使用文本文件比使用数据库显得更方便。另有部分软件处理的数据量极少, 几乎只涉及到简单的程序配置或者用户设置, 采用Windows注册表而作为数据存储是一个有效的选择, 如应用程序初始画面显示上一次的状态信息。
可以把注册表看作是windows OS中的一个核心数据库, 这个数据库中存放着系统的各种参数, 这些参数控制着系统的启动、驱动程序的加载和应用程序的运行, 在整个系统中起着核心作用。对于应用程序的部分简单数据而言, 使用注册表存取, 其速度和便捷性远远优于使用文本文件和数据库。
1 My命名空间
“My”[1]是.NET提供用于快速开发应用程序的一项新功能, 它能提高生产效率, 并且简单易用。“My”用于访问应用程序的机器运行环境相关的信息和默认对象实例, 能够帮助开发人员快速利用.NET中的各种功能进行开发。VB Team设计了My命名空间来解决这个问题, 它将.NET Framework中最常用的功能挑选出来, 按照最容易理解的逻辑结构组织在一起。
My命名空间提供了简单且直观的方法来访问大量.NET Framework类, 从而使用户能够与计算机、应用程序、设置、资源等进行交互。My.Computer封装的大量访问系统和硬件信息的功能, 操作起来比直接使用.NET Framework或Windows API都方便, 能访问计算机组件的属性。本文探讨的注册表位于My.Computer下的My.Computer.Registry。My命名空间的层次结构如图1。
2 注册表简介及.NET中的访问
2.1 注册表简介
注册表[2,3,4,5]是Microsoft Windows中的一个重要的信息数据库, 用于存储系统和应用程序的设置信息。注册表是一个多层次结构, 在不同系统上注册表的基本结构相同, 其中的复杂数据会在不同方式上结合, 从而产生出一个绝对唯一的注册表。
注册表中信息的存储形式是树形结构, 其根节点是“计算机”, 下有5个顶级节点, 这些节点都是操作系统定义好的, 不能添加、修改或删除。
2.2 使用MY.Computer.Registry访问注册表[6]
访问注册表的方法有两种, 一是使用.Net框架开发环境提供的内置函数, 比如VB的Get Setting函数和Savesetting函数。但是, 使用函数有一定的局限性, 或许只能操作特定的键中的值。MY.Computer.Registry对象有诸多属性, 可供用户直接访问注册表。
第一, 方法Create Sub Key创建注册表项。
第二, 方法Set Value设置注册表键值, 方法Get Value获取注册表键值。
第三, 方法Delete Sub Registy删除注册表项;方法Delete Sub Registy Tree删除注册表键及其子键。
3 应用案例——游戏软件程序配置的注册表存取
3.1 案例及代码
某游戏需要记录并读取前三名的得分, 采用注册表存取。游戏代码中设计Hight Score类和Hight Scores类, High Score包含name属性和score属性, 以及比较两个High Score对象的方法;High Scores类处理分数的检索和设置, 核心代码如下。
Public Class High Scores
'从注册表读取得分 (略)
'更新并写入高分
P u b l i c S h a r e d S u b U p d a t e S c o r e s (B y Va l s c o r e As Integer)
Dimtops (3) As High Score
Dimscore Key As Registry Key=Registry.Current User.Create Sub Key ("SoftwaregameCollapseHigh Scores")
tops (0) =New High Score (score Key.Get Value ("Place0") .To String)
tops (1) =New High Score (score Key.Get Value ("Place1") .To String)
tops (2) =New High Score (score Key.Get Value ("Place2") .To String)
If score>tops (2) .Score Then
Dim name As String=Input Box ("New high score of"&score&"for:")
tops (3) =New High Score (":0")
tops (3) .Name=name
tops (3) .Score=score
Array.Sort (tops)
Array.Reverse (tops)
score Key.Set Value ("Place0", tops (0) .To String)
score Key.Set Value ("Place1", tops (1) .To String)
score Key.Set Value ("Place2", tops (2) .To String)
End If
score Key.Close ()
End Sub
'为新得分建立项
Shared Sub Set Up High Scores ()
Dimscore Key As Registry Key=Registry.Current User C r e a t e S u b K e y ("S o f t w a r eV B S a m p l e sC o l l a p s e High Scores")
Ifscore Key.Get Value ("Place1") Is Nothing Then
score Key.Set Value ("Place0", ":0")
score Key.Set Value ("Place1", ":0")
score Key.Set Value ("Place2", ":0")
End If
score Key.Close ()
End Sub
'重置得分 (略)
End Class
3.2 测试结果
游戏运行中, 产生了两个高分并记录, 游戏选项窗体运行结果如图2, 注册表观察到的结果如图3, 可见高分记录前三名已经准确记录进入注册表。
4 结语
利用Microsoft Windows操作系统的核心数据库——注册表用作应用程序的简单数据存储, 比使用数据库和文本文件更加有效, 尤其是用于保存程序配置参数和用户信息设置。本文通过一个游戏案例实现了程序配置信息的注册表存储。
摘要:应用软件简单数据的存取的便捷方式就是使用注册表, .NET的My命名空间中My.Computer.Registry提供了访问注册表的方法, 使开发者能方便地通过注册表存取应用程序的简单数据。
关键词:.NET,My命名空间,注册表,简单数据存取,应用软件
参考文献
[1].NET最佳实践[M].北京:机械工业出版社, 2014.
[2]九州书源.BIOS与注册表[M].北京:清华大学出版社, 2011:118-134.
[3]Nanavati M, Kothari B.Detection of Rootldts in the Windows Registry[EB/OL].[2011-02-23].http://helios.Miel-labs.eom/downloads/registry.pdf.
[4]李伟斌, 壬华勇, 罗平.通过注册表监控实现木马检测[J].计算机工程与设计, 2006, 27 (2) .
[5]刘喆, 张家旺.Rootkit木马隐藏技术分析与检测技术综述[J].信息安全与通信保密, 2010 (11) .
[6]马玉春.Visual Basic.NET案例教程[M].北京:机械工业出版社, 2009:77-95.
动动配置,数据存取更安全 篇2
在信息技术日益普及的今天, 不管是个人用户还是单位用户, 需要处理和保护的数据越来越多。为了实现目的, 不少用户常常想方设法寻找外力工具来确保数据文件存取的安全。实际上没有必要舍近求远, 只要动动Windows系统的一些配置, 就能让特定数据文件的存取操作更安全。
移除数据加密图标
保护数据文件安全最直接的方法就是对其采取加密保护措施。Windows系统中自身就有加密保护措施, 除集成有新兴的Bit Locker加密技术外, 还保留了原有的EFS加密技术。但在使用EFS时, 被保护的数据文件会出现明显的加锁图标, 而且NTFS系统会以不同的颜色显示, 这会很清楚地暴露目标文件。
可以采取如下操作移除数据加密图标:依次单击“开始”、“运行”命令, 弹出系统运行对话框, 输入“regedit”命令并回车, 开启系统注册表编辑器运行状态。在该编辑界面左侧列表中, 将鼠标定位到注册表节点“HKEY_L O C A L_M A C H I N ESOFTWAREMicrosoftWindowsCurrent VersionExplorerShell Icons”上, 如图1所示。在目标节点选项的右侧区域, 用鼠标右键单击空白位置, 从弹出的右键菜单中逐一点选“新建”、“字符串值”命令, 将新创建的字符串值名称设置为“178”, 并鼠标双击, 在对应键值对话框中, 输入一个空白ICON图标的完整路径, 单击“确定”按钮。重启计算机后, 数据文件的加密图标就被成功移除了。
拒绝解密威胁数据
如果存储私密数据的系统登录密码不够“健壮”, 非法用户很轻松就能借助外力暴力破解登录密码。因此建议动动组策略配置, 启用相关密码策略, 强制用户使用更复杂、更安全的密码来保护系统登录的安全。
首先启用帐户锁定策略, 强制登录密码输入次数超过规定后自动将相关帐户锁定起来, 并且在帐户锁定期满之前无法继续进入系统。在进行该操作时, 先依次单击“开始”、“运行”命令, 弹出系统运行对话框, 输入“gpedit.msc”命令并回车, 弹出系统组策略编辑界面。在该界面左侧区域, 逐一跳转到“本地计算机策略”、“计算机设置”、“Windows设置”、“安全设置”、“帐户策略”、“帐户锁定策略”分支上。双击指定分支下的“帐户锁定阈值”选项, 切换到如图2所示的设置框, 输入合适的登录尝试失败次数。正常来说, 将该登录次数输入为“3”到“5”次为宜, 确认后保存即可。
接着强制使用更多密码位数, 建议普通用户密码所包含字符应该不少于12个, 管理员级别的密码字符数应要达到15个字符。要达到该目的, 只要在系统组策略编辑器窗口左侧区域, 依次跳转到“本地计算机策略”、“计算机配置”、“Windows设置”、“安全设置”、“账户策略”、“密码策略”分支上, 双击指定分支下的“密码长度最小值”选项, 展开对应选项属性对话框, 在其中输入“12”或“15”, 单击“确定”按钮。
第三, 强制定期变换登录密码内容, 能有效降低安全威胁程度。在系统组策略编辑窗口左侧区域, 依次选择“本地计算机策略”、“计算机配置”、“Windows设置”、“安全设置”、“账户策略”、“密码策略”分支选项, 双击其中的“密码最长使用期限”选项, 在其后界面中输入合适的密码变换间隔时间。
追踪数据存取痕迹
Windows系统自带有强大的对象审核功能, 通过这项功能可全程追踪重要数据的存取痕迹, 包括对重要数据文件的编辑、修改, 是否创建了目录, 是否了运行其中的特定程序等。例如, 要追踪“F:111”目录中的数据文件存取痕迹时, 可以按照下面的操作来进行:
首先进入系统的资源管理器窗口, 逐一单击“工具”、“文件夹选项”命令, 弹出文件夹选项设置框, 选择“查看”选项卡, 将对应设置页面中的“使用简单文件共享”选项取消选中, 单击“确定”按钮保存。
之后打开系统运行对话框, 执行“gpedit.msc”命令, 开启系统组策略编辑器。在该编辑左侧列表中, 依次选中“本地计算机策略”、“计算机配置”、“Windows设置”、“安全设置”、“本地策略”、“审核策略”分支选项, 找到对应分支下的“审核对象访问”选项, 同时用鼠标双击, 弹出如图3所示的对话框, 勾选“成功”、“失败”等选项, 确认后返回。
接着在系统资源管理器窗口中, 打开“F:111”目录的右键菜单, 单击“属性”命令, 选择“安全”选项卡, 在安全选项页面中点击“高级”按钮, 展开特定目录的高级安全设置对话框。继续点选“审核”选项卡, 切换到“高级安全设置”页面, 点击“添加”按钮, 选择并添加“Everyone”账号, 确认后进入目标账号的审核项目列表窗口, 将“遍历文件夹/执行文件”、“创建文件/写入数据”、“创建文件夹/附加数据”等选项的“成功”、“失败”操作都勾选 (如图4所示) 。如此“F:111”目录的有关操作就会被Windows系统智能审核追踪。
智能授予数据权限
在公共场合往往会发生重要数据被通过U盘悄悄带走的现象。实际上, 可以按需分类, 为不同用户智能授予不同等级的U盘数据访问权限。
要实现这种控制目的时, 首先通过文本编辑程序创建好用户既可以正常显示U盘内容, 又能存取其中数据的脚本文件, 假设该脚本文件的名称为“123.bat”, 其中的代码内容为:
其中首行代码被执行时, 会为当前登录用户授予显示U盘分区图标的权限, 第二行代码被执行时, 会为当前用户授予存取U盘数据的操作权限。
同样地, 再生成好限制用户使用U盘设备的脚本文件, 假设该批处理文件为“234.bat”, 该文件中的代码内容如下:
上述代码执行会将U盘所用的USB接口强制定义为禁用状态, 日后非法用户即使将U盘插入到计算机中, 也不能通过它转移数据。
下面以“abc”用户账号登录进入计算机系统, 逐一单击“开始”、“运行”命令, 展开系统运行对话框, 输入“gpedit.msc”命令, 单击“确定”按钮弹出系统组策略编辑界面。在该界面的左侧显示区域中, 依次选择“本地计算机策略”、“计算机配置”、“Windows设置”、“脚本 (启动/关机) ”分支选项, 双击指定分支下的“启动”组策略, 切换到如图5所示的选项设置框。按下“添加”按钮, 在其后界面中添加先前生成“123.bat”脚本文件, 单击“确定”按钮返回。如此, “abc”用户账号日后再次登录进入计算机系统时, Windows系统会智能执行脚本文件“123.bat”来允许当前用户正常使用移动硬盘, 同时允许对移动硬盘中的所有数据进行读写操作。
之后以“bcd”用户账号登录进入计算机系统, 按照同样的操作方法, 将“234.bat”批处理文件添加到启动组策略中, 这样“bcd”用户日后完成系统登录操作后, 计算机将会智能调用脚本文件“234.bat”来限制用户使用计算机的USB接口, 这时非法用户即使插入U盘也无法存取其中的数据文件。
管好数据安全证书
在保护数据文件存取安全时, 很多用户会首选Windows系统自带的EFS加密功能对数据执行加密操作。EFS功能对重要数据进行加密时会产生对应的用户证书, 该证书与加密的文件以及安全标识符等是相互联系的。倘若在计算机中存储了太多的加密数据和安全证书, 并且要经常访问这些加密数据时, 有可能会出现加密数据和安全证书在对应关系上的“混乱”问题, 这将会影响到重要数据的安全存取效率。
要识别加密数据的安全证书, 不妨通过查找证书的编号, 直接右击特定加密文件, 点选右键菜单中的“属性”命令, 弹出加密文件属性设置框, 选择“常规”标签, 按下“高级”按钮, 切换到高级设置对话框中。点击“详细信息”按钮, 展开“证书缩略图”对话框, 从中就能获取安全证书的唯一编号。对于其编号内容, 不妨使用证书管理器来查看, 逐一点击“开始”、“运行”命令, 展开系统运行对话框, 输入“certmgr.msc”命令并回车, 进入如图6所示的证书管理器界面, 导入安全证书, 重新设置好安全证书的名称, 尽量与前面获取到的证书编号对应。日后就能通过证书编号和证书文件名称的对应关系快速找到加密数据的安全证书。
谨防隐私数据显现
Windows 7以上版本系统新增有强大的数据搜索功能, 用户不经意间在系统“开始”菜单的搜索文本框中输入一些关键字, 或许就能将某些隐私性数据文件搜索显现出来。按如下步骤可保证隐私数据不被显现出来:首先在系统开始菜单的搜索文本框中输入“索引选项”关键字并回车, 展开如图7所示的索引选项设置对话框;如果系统尚未创建索引列表, 则不需进行任何设置, 如看到隐私数据已经出现在索引列表中, 那只要按下“修改”按钮, 切换到索引位置列表框, 取消选中隐私数据所在的文件夹, 确认即可。
空间数据库的类型和存取结构 篇3
关键词:数据库管理系统,数据类型,存取机构
一引言
传统的数据库系统只适用于管理二维数据 (如表格、正文、字符串等) 。随着数据库应用领域的不断扩展, 涌现出声、图、动画等新的数据类型。这些类型的共同之处是要处理基于空间概念上的数据。近年来, 美国、德国等科技先进国家正在开发对空间数据库系统的研究, 试图在大部分传统的数据库管理系统 (DBMS) 的基础上捆绑一些处理空间信息的功能模块。
二空间数据库管理机制的特点
空间数据库管理系统是空间数据库的核心软件, 将对空间数据和属性数据进行统一管理, 为GIS应用开发提供空间数据库的管理系统除了必须具备普通数据库管理系统的功能外, 还具有以下两方面的研究内容: (1) 空间数据存储管理, 实现空间数据强大的基础平台。和属性数据的统一存储和管理, 提高数据的存储性能和共享程度, 设计实现空间数据的索引机制, 为查询处理提供快速可靠的支撑环境。 (2) 支持空间查询的SQL语言, 参照SQL-92和Open GIS标准, 对核心SQL进行扩充, 使之支持标准的空间运算, 具有最短路径、连通性等空间查询功能。
三空间数据类型
传统的DBMS只能处理一些基本数据类型、时态数据类型、货币数据类型以及结构数据类型等。然而空间数据库可以应用到许多不同的领域, 如扩充传统数据类型、编制转换函数或编程模拟新类型, 但这种方法的效率不是非常理想。当我们运用数据库引擎时, 我们必须要增加空间数据类型处理的功能。由于篇幅有限, 在此我们就暂时给出几个面向空间实体的数据类型。
1. 如果一个对象针对某个参照系, 它的尺寸大小无关紧要, 可抽象成为一个点模型
如一所学校或一家医院所占空间在小比例尺地形图上无法表示大小时, 通常我们用一个点来表示。数字线划数据是将空间的物直接抽象为点、线、面的实体, 用坐标描述它的位置和形状。这种抽象的概念直接来源于地形测图的思想。当要绘制地图时, 根据道路等级给它配赋一定宽度、线型和颜色。这种描述非常适用于计算机表达, 用抽象图形表达地理空间实体。
2. 影像数据包括遥感影像和航空影像, 它可以是彩色影像, 也可以是灰度影像
影像数据在现代GIS中起到越来越重要的作用。其主要原因:一是数据源丰富, 二是生产效率高, 三是它直观而又详细地记录了地表的自然现象, 人们使用它可以加工出各种信息, 如进一步采集数字线划数据。在GIS中影像数据一般经过几何和灰度加工处理, 使它变成具有定位信息的数字正射影像。
四关系—对象型存取结构
关系—对象型存取结构相对传统的结构化数据模型, 用更丰富的数据语义区别了对象类属性和关系类型属性两个概念, 使其适用于半结构化数据的存储与管理。从分析空间数据的半结构化特征入手, 以空间数据的嵌套关系为管理对象, 实现了在关系型数据库中对空间半结构化数据的存储与管理。如适用于二值图像存储的四叉树;有利于表示空间规则物件的八叉树;GIS领域里常用的栅格数据结构和拓扑型数据结构“点—线—面”结构;此外还有R树、R+树等。这些结构在不同领域得到广泛的应用, 但是无论哪种结构, 都有局限性, 只能适用于某一领域或几种应用领域。很难找到一种通用的空间数据结构来有效管理不同类型的数据。
五结论
数据库因不同的应用要求会有各种各样的组织形式。数据库的设计是根据不同的应用目的和用户要求, 在一个给定的应用环境中, 确定最优的数据模型、处理模式、存贮结构、存取方法, 建立能反映现实世界的地理实体间信息之间的联系, 满足用户要求, 又能被一定的DBMS接受, 同时能实现系统目标并有效地存取、管理数据的数据库。简言之, 数据库设计就是把现实世界中一定范围内存在的应用数据抽象成一个数据库具体结构的过程。
参考文献
任意类型文件的数据库存取模型 篇4
在软件设计当中, 经常会涉及到多种类型文件数据的数据库存储和访问问题。把文件保存到数据库, 可以对文件进行更好的管理, 特别是文本文件、图片等, 随着文件数量的增加, 这个优势尤其明显。另外, 将文件全部放入数据库可以利用数据库的管理功能, 实现文字的处理、检索等。
软件设计中, 常见的文件类型主要是文本文件 (.TXT) 和图形文件 (.JPG、.BMP、.GIF) 两大类, 也会涉及音频文件、视频文件、带格式字符文件以及一些专门的格式, 譬如Rational Rose模型 (.MDL) 文件。在不同的设计环境下, 提供了若干种实现工具, 譬如在Visual Studio.NET中提供了专门的Image对象类以实现图片操作。但是, 对于一些特殊的文件, 由于没有这些方便之门, 操作起来比较麻烦。这里, 希望找到一种通用的操作方式解决任意类型文件在数据库中的存储与访问的问题。
作为一种通用的解决方案, 各种类型的文件在数据库内的存储可以选择两种方案。一种是数据库内存储文件的路径, 在需要引用文件时根据数据库内的路径从磁盘读取文件本身;一种是把文件本身以某种形式直接存入数据库。第一种方法的优点是比较容易实现, 但数据安全性低, 并且管理困难;第二种方法与第一种的优缺点刚好相反。这里讨论第二种方法。
下面讨论目前被广泛采用的.NET架构下的实现模型。
1 文件数据存储
数据库管理系统有很多, 常用的数据库管理系统有AC-CESS和SQL Server。ACCESS数据库虽然安全性不够高, 但是提供文件式的数据库服务, 不需要购买和配置专门的数据库管理系统, 仍然为设计人员所钟爱。SQL在数据库控制方面的能力比ACCESS强很多。这里以ACCESS和SQL Server为例进行讨论。
在ACCESS中, 为满足各种文件内容的需要, 选择“OLE对象”类型。
在SQL Server中, 可以选择Binary、varbinary、Image等3种二进制数据类型。Binary支持定长1-8000字节的二进制数据, varbinary支持变长1-8000字节的二进制数据, Image支持变长20亿字符的二进制数据。从常用和提高空间利用率考虑, 一般选择varbinary类型。
2 数据存取模型
.NET架构下, 提供的ADO.NET模型提供的对象可以实现此文件—数据库—文件的变换, 其过程描述为图1。涉及的对象有FileStream、Byte、ADO.NET。
FileStream类称为文件流, 是这里实现变换的关键。其允许直接从文件创建流对象, 以字节方式读写文件, 构造此对象时确定操作模式 (FileMode) , 主要的操作是Read、Write、Close。Read方法把FileStream内容读入到Byte数组;Write方法把By te数组的内容写入FileStream;Close方法关闭FileStream。
Byte是一种数据类型, 这里主要是构造Byte数组, 用以存储FileStream转换来的内容。
ADO.NET是.NET构架提供的数据库操作模型, 通过Conn ection、Command、Adapter、pbuilder、DataSet、Table、DataRow等一系列对象实现数据库的存储和访问。
SourceFile和DestFile分别代表需要存入数据库的文件和由数据库产生的文件。
DataBase表示一个抽象的数据库存储。
3 实现算法
下面的算法基于ADO.NET模型的脱机存取模式, 采用BASIC语法。
3.1 构造数据访问集合
在操作之前连接数据库, 构造数据集合, 大致分3步:
Step1连接并打开数据库;
Step2构造脱机访问数据表集合;
Step3从脱机访问数据表集合获取文件数据记录集。
3.2 导入文件到数据库
导入文件的过程描述为:根据文件建立文件流FileStream‘FileStream流变换为Byte数组’构造文件信息记录‘添加记录到文件数据记录集’更新数据库。
dadapter.Update (dset, “fileinfo”) //根据脱机访问数据表集合dset更新dadapter所连接的数据库中的文件数据表fileinfo
3.3 从数据库读取文件数据
读取文件数据的过程描述为:根据文件数据记录集ptable的文件内容属性生成Byte数组‘打开输出文件流->把Byte数组写入文件流FileStream’关闭文件流FileStream。
desfile.Close () //关闭文件流, 完成读取
通过以上步骤, 文件产生在DesFileName代表的文件中。
4 结束语
本文讨论了一种通用的文件存储于数据库的模型, 并根据这个模型实现了文件存储于数据库的算法。对于这个操作与其它数据操作的联合使用, 可以在此算法的基础上稍作变化以实现。
本文已经测试的文件类型包括*.wmv视频文件、*.txt纯文本文件、*.doc微软word文件、*.xls微软电子表格文件、*.pdf文件、*.exe执行文件、*.dat数据文件、*.vob视频文件、*.rar压缩文件、*.psd photoshop文件、*.mp3音频文件、*.mdl Rationa Rose模型文件、*.ppt微软演示文稿文件、*.mdb ACCESS数据库文件, 从这些比较有代表性的文件操作来看, 算法是有效的。
本文的实验环境为Visual BASIC.NET 2008+ACCESS2003+SQL Server 2005。
摘要:为了保证文件的安全性并便于管理, 经常需要把文件存入数据库。讨论了实现文件存储于数据库的一种通用存取模型, 根据这一模型实现文件存储于数据库的算法。
关键词:文件,数据库,存取模型
参考文献
[1]国刚, 周峰, 孙更新.UML与Rational Rose2003软件工程统一建模原理与实践教程[M].北京:电子工业出版社, 2007.
[2]王华杰, 张帆, 戴伯勇.Visual Studio.NET程序设计教程[M].北京:中国铁道出版社, 2003.
[3]吕文达.精通C#程序设计[M].北京:清华大学出版社, 2006.
简单数据存取 篇5
融合计算机图形和数据库于一体的地理信息系统(GIS:Geographic Information System)则是存储和处理空间信息的高新技术,它把地理位置和相关属性有机地结合起来,根据用户的需要将空间信息技术及其属性信息准确真实、图文并茂地输出给用户,满足人们对空间信息的需求,借助其独有的空间分析功能和可视化表达功能,进行各种辅助决策。近些年来,已广泛应用于资源、环境、电力、测绘、农业、交通、电信、城市设施管理、航空航天及军事等领域。在互联网环境下,海量空间信息的提取、存储和处理是空间信息有效利用的关键,是广大地理信息研究与应用的科研人员们近期所关注的重要研究课题。
目前,Internet GIS的应用存在两种典型的结构:瘦客户端结构和胖客户端结构,分别如图1、图2所示。
常用的瘦客户机结构[1],在客户机端没有或者有很少的应用代码。客户机负责数据结果的显示和用户请求的提交;应用服务器和Web服务器负责响应和处理用户的请求;而数据库服务器负责数据的管理工作。所有的空间数据和应用程序都放在服务器端,客户端只是提出请求,所有的响应都在服务器端完成。不难看出,优化服务器端的应用是提高响应速度的关键。Oracle+Arc SDE是服务器端的典型应用,也是目前国际上最先进的地理信息管理方案之一,可提供强大的地理信息存储访问机制。本文以Oracle+Arc SDE应用为例,探讨空间信息访问优化技术,即优化Oracle数据库服务器配置和Arc SDE空间数据库引擎配置,以达到合理组织数据和有效地提取数据的目的。
1 数据库服务器的优化
数据库在GIS中的应用彻底地改变了GIS的应用模式,它不仅解决了传统意义上的数据存储管理问题,也解决了多用户编辑、数据完整性和数据安全机制等诸多问题,是GIS应用中的关键。因此,数据库服务器优化的好坏对于能否充分发挥系统性能至关重要。其性能优化可以从内存分配、磁盘I/O、回滚段、CPU的使用等几个方面考虑[2]。
1.1 调整内存分配
Oracle数据库服务器保留3个基本的内存高速缓存,分别对应3种不同类型的数据:库高速缓存,字典高速缓存和缓冲区高速缓存。库高速缓存和字典高速缓存一起构成共享池,共享池再加上缓冲区高速缓存构成了系统全程区(SGA:System Global Area)。SGA是对数据库数据进行快速访问的一个系统全程区,若SGA本身需要频繁地进行释放、分配,则不能达到快速访问数据的目的,因此应把SGA放在主存中,而不要放在虚拟内存中。内存的调整主要是指调整组成SGA的内存结构的大小来提高系统性能,由于Oracle数据库服务器的内存结构需求与应用密切相关,所以内存结构的调整应在磁盘I/O调整之前进行。
1.2 调整磁盘I/O
在任何GIS数据库中,磁盘的I/O速度对整个系统性能有重要影响,磁盘的I/O争用往往是数据库性能的瓶颈。解决好磁盘I/O问题,可显著提高系统性能。磁盘I/O应始于数据文件物理布局的合理性,合理的数据文件物理布局应该始于对数据I/O情况的识别。优化数据库配置,就是使数据库对象按照其活动性相互分离,以提高数据I/O性能。
一般情况下,只有表和索引被视为数据库对象,其实还存在很多其他对象,如视图、序列和同义词等。为数据库服务器创建新文件时,不论是表空间所用的数据文件还是数据事务登录所用的日志文件,都应仔细考虑数据库服务器上的可用磁盘资源。如果服务器上有多个磁盘,则可将文件分散存储到各个可用磁盘上[3],减少对数据库的数据文件及事务日志文件的竞争,从而有效地改善服务器的性能。对于不同的应用系统都有各自的数据集,应当创见不同的表空间分别存储各自应用系统的数据,并且尽可能地把表空间对应的数据文件存放在不同的磁盘上,这种从物理上把每个应用系统的表空间分散存放的方法,可以排除两个应用系统竞争磁盘的可能性,获得较高的运行效率,并易于管理。比如,将数据文件、事务日志文件分别存放在不同的磁盘上,这样事务处理执行的磁盘访问不妨碍对相应的事物日志登记的磁盘访问。将两个事物日志成员放在不同的磁盘驱动器上,可以消除日志文件可能产生的磁盘竞争。把一个应用的表数据和索引数据分散存放不同表空间上,并且尽量把不同类型的表空间存放在不同磁盘上,这样就消除了表数据和索引数据的磁盘竞争。另外高活动性表和低活动性表也不要存放在一起。
1.3 调整数据库服务器的回滚段
人群回滚段是一个存储区域,数据库使用该存储区域存放曾经由一个事务更新或删除的行的原始数据值。如果用户要回滚一个事务所做的改变,那么数据库就从回滚段中读回改变前的数据并使该事务影响的行改变为它们的原状态[4]。回滚段控制着数据库处理事务的能力,因而在数据库成功中起着关键性的作用,不管数据库的其他部分设计得多好,如果设计得不合理,将会严重影响系统的性能。建立和调整回滚段的原则是:分离回滚段,为回滚段创建一个以上的表空间,使回滚段与数据字典、用户数据、索引等分离开来;创建不同大小的回滚段群,这有利于频繁进行少量数据修改的联机事物处理;创建数量适当的回滚段。一般回滚段数量与并发事物个数有关,通常并发事物为n时,回滚段数为n/4。
1.4 调整CPU的使用
Oracle中,应保持所有用户和后台进程操作在同一优先级上[5],修改优先权对竞争和响应时间有意想不到的影响;在多处理器环境中,使用处理器亲和力/捆绑,处理器捆绑禁止某进程从一个处理器移动到另一个处理器,允许处理器高速缓存中的信息被更好地利用,而且可以捆绑服务器进程,从而充分利用高速缓存;为导出/导入和SQL Loader使用单任务连接,因为作为单任务连接Oracle可执行程序,允许用户进程直接存取整个SGA非常高效。
1.5 Oracle物化视图
物化视图(Materialized View),在以前的Oracle版本中称为快照(Snapshot)。Oracle的物化视图提供了强大的功能,可以用于预先计算并保存表连接或聚集等耗时较多的操作的结果,这样在执行查询时,就可以避免进行这些耗时的操作,从而快速地得到结果。物化视图需要占用存储空间。物化视图可以分为以下三种类型:包含聚集的物化视图、只包含连接的物化视图、嵌套物化视图,当基表发生变化时,物化视图也应当刷新。Oracle提供了三种方式来维护同步:完全刷新(refresh complete)、增量刷新(refresh fast)、部分刷新(refresh force)。它们都可以在创建物化视图的时候指定。完全刷新指当要同步数据时,重新生成整个视图。增量刷新是仅将基本表已经修改的数据行更新到物化视图中。DBMS优先选择增量刷新,否则用完全刷新。除了刷新方式以外,数据库管理系统还要选择刷新的时间:刷新的时间可以是事务提交的时候刷新、根据需要刷新或者是指定刷新间隔时间。
2 空间数据库引擎的优化
数据共享性、系统互操作性是GIS发展的关键趋势,访问效率始终是GIS厂商考虑的重点问题。Arc SDE技术就是ESRI(Environmental System Research Institute)针对不同的操作系统平台和数据库平台的差异而推出的面向特定领域(空间数据管理及应用)的高度专业化的应用技术[6],提供不同的客户端高效地数据共享和互操作。它不仅实现了空间要素的存储、检索、管理,同时还提供基于版本管理的工作流和长事务处理机制,提供更多的标准开放的空间数据模型和更高的访问效率。无疑Arc SDE的优化对整个系统性能有着至关重要的影响,其优化可以从内存分配、空间数据存储和其他重要参数设置3个方面进行讨论。
2.1 调整内存分配
Arc SDE在Oracle中体现为一个数据库用户,并且将系统全程区(SGA)的基本要素扩展为5个:共享池、日志缓存、块缓存、JAVA池和巨池(Large Pool)。共享池由库高速缓存和字典高速缓存构成(共享池的大小由SHARED-POOL-SIZE参数控制,推荐设置为55MByte,最大值为75MByte),存放用户的身份验证和执行计划等;日志缓存用于存放重写(Redo)日志(它保存着尚未提交的数据更新,日志缓存由LOG-BUFFER参数控制,如果内存空间允许,可以将该参数设置为10MByte),空间达到一定程度后,会写到硬盘,形成在线重写日志(Online Redo Log)文档;块缓存用于存放先前访问过的表和索引数据块(块缓存的大小由DB-BLOCK-SIZE和DB-BLOCK-BUFFERS参数控制,推荐将DB-BLOCK-S IZE设置为16 384 Byte,这个参数小于8 192 Byte时,会降低数据库性能。DB-BLOCK-BU FFERS参数乘以DB-BLOCK-SIZE就是块缓存的总大小),以减少系统的I/O需求,与数据库中的块段相关,每次调整8 k Byte,其组织得越好,系统响应速度越快;JAVA池是用于存放JAVA小程序的;巨池(Large Pool)用于当共享池不足时,系统会自动分配一个巨池来弥补不足。除SGA外,还有分配给gsrvr用的Array buffer(通常550 k Byte)和用于链接传输用的Transport buffer(通常640 k Byte/在线用户)值得注意。内存分配的好与坏可以通过init1sde和giomgr1defs文档查看配置、跟踪系统性能,以作进一步的优化。典型的内存分配为:一半的物理内存给SGA;另一半的物理内存给系统、Oracle的存储过程和Arc SDE;共享池通常使用默认值;增加内存时,应重点给块缓存,其他使用默认值,以提高系统性能。
2.2 调整空间数据存储
影响数据存储的4个主要参数是精度值(F表)、偏移量(S表)、索引网格和Oracle存储参数。Geodatabase使用整数来存储空间数据以取得更高的效率,而空间数据基本上都是浮点型的,因此在两者之间转换时需要一个精度控制,选择合适的精度甚为重要,它直接影响存储、计算速度和要素的冗余或丢失。偏移量保证加载的数据坐标在Geodatabase的整形空间域内。索引格网单元大小的确定则直接影响数据的响应和系统性能,其大小需要在每格网索引的要素数量和每要素所占格网数量之间来平衡选择,通常以要素封装边界平均大小的3倍来设置初始的格网单元大小,然后在进一步调整。网单元大小是可以随时调整的,而精度和偏移量需要在数据加载前确定。Oracle存储参数可参照Oracle的存储规则确定。
3 结论
Oracle+Arc SDE是目前国际上流行的空间数据库管理方案,但对其优化使其发挥出最佳的性能才是最终目的。笔者从系统原理出发,探讨了几种优化的方法供大家参考,在实际工作当中,还可以利用Oracle的跟踪工具跟踪系统性能,分析确定存储、内存分配、块缓存等具体参数值的大小是否合适,进行更细致的调整配置。
参考文献
[1]谭庆全,刘群,毕建涛,池天河(TAN Qing-quan,LIU Qua,BI Jian-tao,CHI Tian-he)瘦客户端WebGIS实现模式的性能仿真测试与分析[J].计算机应用研究(APPLICATION RESEARCH OF COMPUTERS),2008,25(10)
[2]甄福东(Zhen Fu-dong).Oracle10g数据库系统性能优化与调整[J].电脑知识与技术(COMPUTER KNOWLEDGE AND TECHNOLOGY),20106(22):32-36.
[3]姜维智(Jiang Wei-zhi).ORACLE数据库性能优化[D].四川:电子科技大学,9-23.
[4]孙风栋,闫海珍(SUN Feng-dong,YAN Hai-zhen).Oracle10g数据库系统性能优化与调整[J].计算机技术与发展(COMPUTER TECHNOLOGY AND DEVELOPMENT).200919(2):166-172.
[5]刘玉强(Liu Yu-qiang).基于ORACLE(OLTP)数据库性能优化方案的研究与实施[D].北京:北京邮电大学,2007.32-36.
简单数据存取 篇6
图片资料能极大地丰富数据库的信息内容,在开发医疗设备数据库管理系统时,我们希望可以在数据库中保存和提取图片内容。以“大型综合性医院医疗设备管理信息系统”为例,许多难以用词语简单描绘的医疗设备信息(如设备外观、内部构造、故障处理部位和大量有关的文本资料等)适合以图片档案的形式进行保存[1]。实际操作中这些图片档案可以通过数据码摄影或文件扫描手段获得,再通过Photoshop、ACDSEE等图像软件进行容量压缩至100 KB数量级字节,在保证图像清晰的基础上使之有利于在数据库中的存储。如何用PowerBuilder 9.0实现图片档案在SQL Server 2000中的存储与调取,现介绍如下。
2 图像数据在数据库中的存取
在数据库设计中对于图像数据的存储有2种基本的方法:将图片存储在文件系统中或是数据库中。前者采用表+实体的方法,即图像数据以文件形式存放于指定的计算机目录下,在数据库表中只反映图像数据文件的存储路径;后者是直接将图像数据存储在数据库关系表中,也就是把图片信息作为数据表记录的一个字段内容存入数据表中[2]。相比较而言,后一种方法使得图片信息与数据表中其他字段内容的插入、更新和删除都在同一个事务中实现,这样就确保了数据的一致性和文件与数据库之间的一致性,降低了数据不同步的概率。本次设计采用后一种方法存储图片。
SQL Server 2000使用Image类型字段存储图片数据,Image类型属于大二进制数据Blob类型的一种。Power Builder不能使用数据窗口直接操作数据库中的图片数据。如图1所示,它是通过Blob变量读取外部图像文件,并且提供2条命令专门针对Blob变量操作的命令Selectbolb、Updateblob,可以和数据库的Image字段进行数据交换,以实现SQL Server2000数据库中图像数据的插入、更新和提取。这2个命令的语法规则为[3]:
Selectblob Blob Column
into Blob Variable from Tablename
Where Criteria;
功能:在数据表中读取符合条件的blob字段内容到blob变量中。
Updateblob Tablename
Set Blob Column=Blob Variable
Where Criteria;
功能:使用blob变量更新数据表中符合条件的blob字段内容。
3 数据表结构设计
在SQL 2000数据库中创建数据表,名称为product_archive,数据列定义见表1。设置product_id和archive_id列的组合为该表主键,product_id是与其他数据表关联的外键。
4 数据窗口设计
创建数据窗口对象dw_archive用于显示图片档案的文本信息,显示风格为列表样式,数据源选择SQL Select数据源,显示列从数据表product_archive中选取。数据窗口提取档案记录时总是针对特定的某一台设备,所以要为数据窗口定义检索参数p_id(string类型),用以传递设备编号。建立这个数据窗口的脚本代码如下:
SELECT
productarchive.archive_id,
productarchive.archive_name
FROM productarchive
WHERE productarchive.product_id=:p_id
5 用户界面设计
这里的用户界面是指医疗设备信息录入窗口,用于录入和修改所有在数据表中定义字段的信息,当然也可以用作数据库中已有医疗设备记录的详细信息查阅窗口,见图2。该窗口采用PowerBuilder中的标签控件对医疗设备信息进行分类管理,按照设备管理的职能分工和工作流程划分,共设置“基本信息”、“验收”、“使用”、“维修”、“计量”、“报废”和“档案”7个标签页,其中“档案”标签页专用于对图片进行存储、提取和显示操作。“档案”标签页中设置的控件见表2。
6 主要程序代码
6.1 程序初始化
这部分程序主要包括2个内容:一是为应用对象配置SQLCA事务对象属性,建立与数据库的连接,并且打开程序运行的第1个窗口;另一个方面是如果某个窗口中包含数据窗口控件,要在其open事件中为数据窗口控件设置事务对象,然后使用Retrieve()函数从数据库中提取数据。
6.2 读取外部图片
以下代码将外部图片写入blob变量tot_b:
6.3 写入和读取表中的blob字段
6.3.1 更新表productarchive中的blob字段"archive_document"
6.3.2 检索blob列"archive_document"到blob变量"lb_doc"
7 结束语
图片资料在数据库中的存取不仅以电子数据的形式解决了医疗设备档案存储的问题,而且使得医疗设备管理数据库系统在一定程度上具有知识库的功能,在应用中给设备管理工作带来极大方便。本文所介绍的图片存取方法用Power Builder9.0编译和测试通过,可以存储JPEG、BMP、GIF等格式图片,在服务器/客户机模式下运行时调取一幅大约100 KB字节的图片用时约1 s,满足速度要求。
摘要:目的:在医疗设备数据库管理系统中存取图片资料。方法:在SQL Server2000数据库表中定义Blob列保存Image类型数据。PowerBuilder9.0作为前端应用程序开发工具,通过SelectBolb、UpdateBlob命令执行Blob列与Blob变量的数据交换,使用Picture控件显示图片。结果:图像数据在数据库管理系统中实现了方便的存储、更新与显示,并且具有数据一致性好、操作便利、实时存取的特点。结论:该方法扩展了医疗设备数据库管理系统的功能,具有很强的实用性。
关键词:PowerBuilder,医疗设备,图片,SOL Server2000,数据库
参考文献
[1]陈宏文.医疗设备档案管理的探讨[J].医疗卫生装备,2007,28(3):46-47.
[2]陈丽梅,肖晓华.PowerBuilder中图片存储功能的实现[J].计算机应用与软件,2002,19(4):46-47.
简单数据存取 篇7
1 大对象数据的存储
数值型数据或其它小对象数据都是通过二维表来实现存储, 将数据集成在数据表的行中, 通过数据表的操作来实现数据的存放。大对象数据因为数据量大只能将数据块存储在存储设备上, 通过一个16字节的指针指向数据块, 而16字节的指针则放在二维数据表中, 作为一个小对象数据存储。这个16字节的指针指向一个数据块存储片段的根节点, 可以映射指向该数据块存储片段的内部指针。大对象数据的存取时, 先读二维数据表中的指针信息, 通过指针链接读取专门存储大对象数据的存储块。
2 Oracle大对象数据类型
Oralce数据库是由美国甲骨文开发的一款分布式数据库产品, 也是全世界最著名的一款B/S架构下的数据库产品之一。Oracle数据库是一款通用性极好的数据库, 具备完整的数据库管理功能, 是一款完备的关系数据库, 遵循关系数据库的所有约束, 也是一款分布式数据库, 能实现分布式处理数据功能。目前市场上普遍采用Oracle Database 12c, 该款产品引入了一个多承租方架构, 可以让用户轻松管理数据库云, 为未来海量数据处理提供方便。
Oracle数据库中总共包括了LONG, LONG RAW和LOB三种大对象数据类型。LONG和LONG RAW是Oracle早期版本就带有的数据类型, 最大长度为2G, 只支持顺序访问, 也不可以作为对象的属性处理。LOB是Oracle8i版本后的数据类型, 该数据类型包括内部LOB (BLOB CLOB NCLOB) 和外部LOB (BFILE) , 所谓内部LOB就是指存放在数据中的大对象数据类型, 所谓外部LOB就是指存放在操作系统中大对象数据类型。通常用BLOB来存放像图像、音频和视频等这样的二进制格式数据;用CLOB来存放像大的文本数据这样的数据库字符集格式字符数据;用NCLOB来存放像长文本数据这样Unicode字符集字符数据;用BFILE来存放指向某文本文件或二进制文件的操作系统文件指针。
3 Oracle中大对象数据的存取方法
3.1 新建测试用表.
为方便大对象数据的存取, 创建一个指针文件指向大对象数据。
将操作目标设置好后, 将该目录的读写权限放开, 释放给当前数据库用户。
3.2 利用PL/SQL存储过程实现大对象数据存取
设计PL/SQL存储过程pic_insert, 用来存放像图片, 大文本段或视频等这样的大对象数据。
3.2.1 存入大对象的存储过程:
3.2.2 读取的存储过程
这样两个存储过程exec pic_insert和exec pic_read就创建好了, 通过执行这两个存储过程可以实现对Oracle数据库中的大对象数据存取。
4 结语
Oracle数据库中的大对象数据应用是数据库技术中最关键的技术, 通过PL/SQL存储过程来实现是最有效也是最简单的方法, 比较容易让软件设计师掌握。通过实验, 该方法性能优良, 能准确处理大对象数据, 同时因为该大对象数据支持分布式环境处理, 适合B/S架构应用软件的开发。
摘要:随着计算机应用系统的广泛应用, 应该系统的数据库越来越大, 可以存储或应用的数据类型也越来越多。大对象数据作为普通数据类型的补充可以帮助我们解决很多现实问题。但大对象数据的存储和读取却是困扰数据库设计师的难题, 通常会使用高级语言JAVA等来实现Oracle数据库中大对象数据。本文试利用PL/SQL存储过程来实现Oracle数据库中LOB数据的处理, 丰富Oracle LOB数据库的技术理论。
关键词:大对象数据,Oracle,LOB,PL/SQL
参考文献
[1]东庭, 孙学康.使用JDBC数据接口存取Oracle LOB (大对象) [J].电脑编程技巧与维护, 2005 (12) :47-49.
【简单数据存取】推荐阅读:
人教版简单的数据整理08-16
《简单的数据分析》教学设计06-26
数据分配及存取08-14
简单电路不简单10-09
目标简单05-10
简单06-06
简单案例06-24
简单故障06-26
施工简单07-03
简单系统09-08