内存数据库之Altibase常见问题解答(QA)

2022-04-08 00:00:00 数据 数据库 磁盘 内存 性能
Q1  什么是内存DBMS?

        内存DBMS是一种新的在MMDBMS服务器启动后在内存中管理整个数据库的数据库管理系统。内存DBMS是在要求提高事务处理速度的背景下出现的。因为内存DBMS的整个数据库都在内存中,内存DBMS访问磁盘的次数相对于磁盘DBMS要少得多。因为整个数据库常住在内存中,数据处理算法非常简单。因为这些原因,内存DBMS的性能相对于磁盘DBMS要高得多。当然,内存DBMS不只是性能高,同样具有磁盘DBMS的各种功能。   

Q2  请用一句话定义Altibase内存数据库

        Altibase是一个数据库管理系统(DBMS)。它在内存中保存和管理数据,可以不通过硬盘直接访问数据。它提供高效的事务处理解决方案。
      
Q3  Altibase支持什么操作系统?

        因为Altibase内存DBMS在开发中使用一个操作系统无关的模块,所以通过在makefile文件中设置一些选项,重新编译Altibase的源代码可以很方便的移植到其他操作系统。Altibase支持如下的一些32位和64位的操作系统。
Solaris, DEC TRU64, HP-UX, AIX
Linux, Windows 2003
VxWorks, QNX

Q4  Altibase和磁盘DBMS的大区别是什么?

        有两个主要区别。一个是数据库所在的位置不同。磁盘DBMS总是将数据库存在磁盘上,将要访问的数据放在内存缓冲中。内存DBMS将磁盘上的备份数据库加载到内存中并在内存中进行管理。第二个区别就是他们的性能有非常大的不同。另外由于运行环境不同二者之间也有一些其它的区别。在性能方面内存DBMS大约比磁盘DBMS高10倍,功能方面内存DBMS和磁盘DBMS基本相同。
Q5  Altibase的稳定性如何?

        Altibase内存DBMS在2000年10月发布。因为我们有长时间研究和开发DBMS丰富的经验,所以我们能在如此短的时间内开发出一个商业数据库产品。其间,Altibase的性能,稳定性和易用性也在通信,证券和国防领域被验证。Altibase从未让使用它的用户失望。
      系统故障时,如果没有硬盘故障,则可以使用altibase启动时的恢复机制进行完全的恢复。但是如果出现硬盘故障,则只能恢复到近一次的备份。 系统运行当中可以进行全部备份或表级备份

Q6  既然整个数据库都在内存中,数据库的稳定性不会出现问题吗?

        数据库更新时,Altibase立即在日志文件中记录更新的信息。如果系统发生故障,Altibase分析日志文件内容并正确的恢复数据库。
Altibase还具有强大的复制功能,通过复制使系统具有高可用性和高稳定性。

Q7  我知道Altibase的优点之一是数据库复制特性,为什么它如此重要

        是的,Altibase的优点之一是数据库复制特性。首先,Altibase复制的性能非常好。虽然根据查询类型和网络环境的不同会有一点区别,但是在复制中只有简单的SQL语句的情况下,Altibase可以保持独立系统(没有复制的情况下)性能的95%以上,而其它公司的同类产品还不到60%,因此,Altibase数据库复制的性能可以认为非常好。Altibase复制可以自动检测网络和媒体故障并进行适当的处理,在从这些故障恢复后执行完美的数据库复制。如果您想了解Altibase复制的更详细的信息,请查阅本页上部的“产品介绍”菜单中的“数据库复制”子菜单中的内容

Q8  Altibase复制时系统的性能

        Altibase复制时能保持系统90%的性能。Altibase复制时性能的保持可以说是Altibase产品的技术核心,在多种实际应用中得到了验证。
   
Q9  Altibase复制中数据安全性和完整性

        Altibase复制是通过日志传递的方式来实现的。日志具有特定格式,所以在数据传送中无需加密即可保障数据的安全。
数据的完整由TCP控制,利用其本身的查错功能。

Q10  其他内存DBMS提供的用户接口不够好,用户很难开发应用程序。Altibase为用户提供什么样的用户接口?

        因为内存DBMS是一个新技术,所以用户还会面对很多的麻烦。内存DBMS的目的是提高性能,如果系统提供给用户方便的接口,DBMS的性能会下降,所以其他产品在CLI层只提供ODBC和JDBC接口。但是相对于其他产品,Altibase的应用程序开发容易的多,因为Altibase是作为一个通用内存DBMS来开发的。除了ODBC和JDBC之外,Altibase还提供支持嵌入式SQL和PSM(类似于存储过程)的SES。Altibase也支持ISAM接口,这样就使您已经用ISAM开发的程序不用修改就可以在Altibase上使用。

Q11  Altibase对用户数是否有限制,多少用户可以并发访问?

        ALTIBASE可以产生1000多个连接。受操作系统限制,一般多1000多个同时的socket. 由于实际上是使用连结池来提供连结,所以并不存在限制连结的问题。由于Altibase在内存中操作,速度一定会比磁盘数据库快,也就能提供更好的并发性。

Q12  系统到底需要多少内存

        这是根据用户的数据量而不同的。一般以数据文件大小的150%~200%作为所需内存空间。

Q13  将磁盘上的备份数据库加载到内存中需要多少时间?

        加载4G的数据大概需要5分钟时间 (SUN E250),根据系统的配置这个数据将变化
Q14  当数据量大大超出内存时的解决方案。

        使用硬盘swapping。系统性能降低。不建议这种应用形式,因为altibase中没有这种转化的机制,而且也不符合内存数据库的思想。
      可以只对关键模块使用Altibase, 其余数据保存在磁盘数据库中。
      但在大部分情况下,可将所有数据保存在内存中,Altibase独立使用。
Q15  Altibase是否是独立的数据库管理系统,当它与其它磁盘数据库混合连用时是否是作为磁盘DBMS的访问前端?

        Altibase是独立的数据库管理系统,与磁盘数据库一样可以独立使用。它内部具有管理机制和查询算法,并不是作为磁盘DBMS的访问前端使用的。
Q16  Altibase与磁盘数据库连用时是否需要写应用程序?与磁盘数据库是否存在标准接口?

        Altibase与磁盘数据库的连用通过写应用程序来实现。二者之间不存在国际标准的接口。

Q17  怎样定义冷热数据,如何进行冷热数据转换?

        程序员设计时访问量大,影响性能的数据一般被指定为热数据。把这样的数据存储到ALTIBASE中使用,能提高系统的性能。访问量小,对系统性能没有明显影响的数据称为冷数据。
      冷热数据转换是通过应用程序实现的。很多时候,Altibase与磁盘数据库的连用是以模块方式实现的,Altibase负责的模块主要存放热数据。
Q18  如果只用Oracle, 客户端一个SQL语句即可访问数据,如果二者连用,是否客户端要分别建立与Altibase和Oracle之间的联系,并且需要访问两个DB?

        是的。这种情况下客户端需要访问两个DB。

Q19  系统移植时工作量有多大?(数据移植,客户端程序移植,两个数据库之间的联系程序)。

        先要把现有系统的数据以文本形式下载,再使用iLoader上传到ALTIBASE。速度是 10000~20000 tps(transaction per sec)。
      客户端程序移植和两个数据库之间的联系程序,由于Altibase支持ODBC, JDBC, SES如C/C++等多种标准借口,所以这种移植是非常容易实现的。
Q20  我们看到很多Altibase与Oracle连用的实例,能否介绍一下Altibase独立应用情况。

        在Altibase的实施中,大部分情况都是Altibase独立使用的。Altibase的独立使用的实施与传统磁盘数据库非常相似。
      只有当数据量很大情况下,已有的服务都是基于硬盘的数据库,如果把这些都转移到ALTIBASE数据库需要很多的费用 (Altibase价格增长),所以只把那些影响系统性能的服务转移到ALTIBASE。
Q21  Altibase可否提供硬件+软件的解决方案,比如可以自带备用电源,保障断电时数据不丢失。

        用户可以根据自身需要决定是否使用备用电源或第三方HA设备。应用于磁盘数据库中的HA设备,也可以在Altibase中使用,如VERITAS Cluster可用于altibase。
      但由于Altibase强大的复制功能,很多用户发现没有必要使用上述方法。
Q22  Altibase benchmark测试的环境,测试部门。

  1. 测试环境 Server : sun E-450 memory : 4GB CPU : 2 * 400Mz
2. 测试部门 韩国altibase公司内部和韩国三星电子

Q23  如何决定是采用独立模式还是混合模式?

        一般根据客户需求和性价比决定。如果对大量数据的访问性能都有很高要求,应该采用独立模式,如果只对小部分数据的访问速度和性能上存在高要求,则可以使用混合模式。
Q24  假如主机内存只有40多GB,对altibase正常运行是否有影响?

  对altibase正常运行是有影响的,内存不够,可能会使用交换空间,性能会受到影响。

Q25  isql 客户端连接远程Altibase 主机报错?
[ERR-91015 : Communication failure.]

  1.建议更换Altibase 客户端版本
2.重新设置 ALTIBASE_HOME , PATH 环境变量

Q26  Altibase 参数修改步骤

  1、 修改 103 和 39的 altibase.properties,这个文件修改只能是下次重起数据库的时候有效。
PREPARE_LOGFILE_COUNT=2
REPLICATION_PREFETCH_LOGFILE_COUNT=3
REPLICATION_PREFETCHER_RETRY_TIME=1
2、 Replication sync 之前做以下操作
iSQL> alter system set REPLICATION_PREFETCH_LOGFILE_COUNT = 3;
iSQL> altier system set REPLICATION_PREFETCHER_RETRY_TIME = 1;
iSQL> check properties;  
Q27  备机重启动后无法连接AB。
error:
TRANSITION TO PHASE : PROCESS
hostid->844d7498
[FAILURE]
Startup Failed....
[ERR-51039 : Internal Error : Invalid Protocol (err3)]
[ERR-51039 : Internal Error : Invalid Protocol (err3)]

  由于改变了hostid,出现连接错误。把hostid改回成之前的hostid,问题得以解决。
连接成功。
注意:以后遇到类似问题,都要先确认一下hostid是否有改动或网卡更换。

Q28  现在一台PC机上装了solaris和altibase,能否与sun或IBM服务器装的altibase间replication?
操作出现如下错误:
iSQL> create replication rep1 with '10.200.26.36',20300 from sys.acct to sys.acct;
[ERR-61023 : The replication is disabled]

  问题应该是没有启动Replication模块。
需要修改$ALTIBASE_HOME/conf/altibase.properties 中 REPLICATION_PORT_NO = 20301属性,就是再配一个Replicaion专用的端口号。
再重新启动Altibase 就可以启动Altibase Replication功能了。
create 语句中使用的端口号是对方Altibase的 REPLICATION_PORT_NO 。

Q29  创建一个用户test,在该用户下创建replication时出错:
iSQL> create replication rep1 with '10.200.50.247',20301 from test.ACCT to sys.ACCT;
[ERR-31084 : The user has no permission to execute the SQL statement

  Altibase Replicaion 只能在sys/manager 用户下进行管理。
Q30  ALTIBASE有三种运行模式,如何设置这三种模式?

  我们售前跟您说的Altibase 3种运行模式,不知道是不是说的 Altibase内存数据库、Altibase磁盘数据库、Altibase与其他数据库联用这个概念。
这是一个逻辑上的模式,Altibase 没有具体限制。Altibase 内存数据库 、Altibase 磁盘数据库都是可用的。

相关文章