楼主: ~贝贝~

支持国产数据库,达梦数据库试用团DM7大体验,优缺点我来评!活动结束,获奖名单公布

[复制链接]
论坛徽章:
407
紫蛋头
日期:2012-05-21 10:19:41迷宫蛋
日期:2012-06-06 16:02:49奥运会纪念徽章:足球
日期:2012-06-29 15:30:06奥运会纪念徽章:排球
日期:2012-07-10 21:24:24鲜花蛋
日期:2012-07-16 15:24:59奥运会纪念徽章:拳击
日期:2012-08-07 10:54:50奥运会纪念徽章:羽毛球
日期:2012-08-21 15:55:33奥运会纪念徽章:蹦床
日期:2012-08-21 21:09:51奥运会纪念徽章:篮球
日期:2012-08-24 10:29:11奥运会纪念徽章:体操
日期:2012-09-07 16:40:00
211#
发表于 2011-12-14 18:52 | 只看该作者
感受佳:1.带有图形化工具,使用较简单
2.有中文的dba手册和sql手册,便于查看
3.有中文帮助
待改进:1、安装程序有问题,默认的内存设置无法启动数据库
2、数据库管理器有问题,有时报类不存在,见前面我的贴图
3、中文帮助不完整,很多条目没有

使用道具 举报

回复
论坛徽章:
1
2012新春纪念徽章
日期:2012-01-04 11:58:44
212#
发表于 2011-12-14 22:32 | 只看该作者
hwtong 发表于 2011-12-14 16:32
我这边全部都是安装在c盘下的.
进入到c:\dmdbms\bin下执行dmserver也是报OO那个错误.之后也是将c:\dmdms ...

不用拷贝。直接
dmserver c:\dmdms\data\DAMENG\dm.ini  带个参数即可启动。 不带参数默认是当前目录

使用道具 举报

回复
论坛徽章:
1
2012新春纪念徽章
日期:2012-01-04 11:58:44
213#
发表于 2011-12-14 23:00 | 只看该作者
感受佳:
1.达梦7的性能监视工具功能很强,可以监视系统内部的很多东西。线程、会话、SQL,SQl历史、事务等。
感觉和oracle的虚拟视图类似。
2.INI参数可以在客户端直接查看、修改比较方便。

使用道具 举报

回复
论坛徽章:
26
ITPUB伯乐
日期:2012-05-22 15:05:35喜羊羊
日期:2015-05-14 12:15:30美羊羊
日期:2015-07-02 22:22:59秀才
日期:2015-08-24 09:51:48天枰座
日期:2015-11-05 16:53:35双鱼座
日期:2015-12-05 19:22:56巨蟹座
日期:2015-12-20 18:46:10摩羯座
日期:2016-05-19 09:54:17ITPUB15周年纪念
日期:2016-10-13 13:15:34秀才
日期:2017-02-22 15:16:26
214#
发表于 2011-12-15 08:01 | 只看该作者
julia2011 发表于 2011-12-14 22:32
不用拷贝。直接
dmserver c:\dmdms\data\DAMENG\dm.ini  带个参数即可启动。 不带参数默认是当前目录

但是我在命令行下根本就启动不了.
一直显示在system is ready的状态.

使用道具 举报

回复
论坛徽章:
26
ITPUB伯乐
日期:2012-05-22 15:05:35喜羊羊
日期:2015-05-14 12:15:30美羊羊
日期:2015-07-02 22:22:59秀才
日期:2015-08-24 09:51:48天枰座
日期:2015-11-05 16:53:35双鱼座
日期:2015-12-05 19:22:56巨蟹座
日期:2015-12-20 18:46:10摩羯座
日期:2016-05-19 09:54:17ITPUB15周年纪念
日期:2016-10-13 13:15:34秀才
日期:2017-02-22 15:16:26
215#
发表于 2011-12-15 08:58 | 只看该作者
七公,我整理了下我之前的问题(包括你已经给出解释和暂未解决的).放置成一个文档吧,不想贴图了.

DMTest.doc

570.5 KB, 下载次数: 20

使用道具 举报

回复
论坛徽章:
6
2012新春纪念徽章
日期:2012-01-04 11:53:292013年新春福章
日期:2013-02-25 14:51:24林肯
日期:2013-09-12 15:57:33优秀写手
日期:2013-12-18 09:29:09慢羊羊
日期:2015-03-04 14:51:352015年新春福章
日期:2015-03-06 11:57:31
216#
发表于 2011-12-15 09:09 | 只看该作者
SYSTEM IS READY 说明服务器已经启动了;

直接用客户端工具连接上去试试

使用道具 举报

回复
论坛徽章:
43
现任管理团队成员
日期:2011-05-07 01:45:08ITPUB元老
日期:2012-09-12 14:50:28版主5段
日期:2014-06-11 02:21:31阿斯顿马丁
日期:2013-11-19 10:38:16祖母绿
日期:2012-11-06 12:43:12路虎
日期:2013-11-20 11:37:53雪佛兰
日期:2013-09-05 13:28:25ITPUB9周年纪念徽章
日期:2010-10-08 09:28:512015中国数据库技术大会纪念徽章
日期:2015-04-24 16:04:24秀才
日期:2015-05-26 13:32:07
217#
发表于 2011-12-15 09:22 | 只看该作者
hwtong 发表于 2011-12-15 08:58
七公,我整理了下我之前的问题(包括你已经给出解释和暂未解决的).放置成一个文档吧,不想贴图了.

谢谢,辛苦了,我们有专人处理。

使用道具 举报

回复
论坛徽章:
0
218#
发表于 2011-12-15 09:47 | 只看该作者
听说过 没怎么用过 可以尝试一下

使用道具 举报

回复
论坛徽章:
277
马上加薪
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11版主9段
日期:2012-11-25 02:21:03ITPUB年度最佳版主
日期:2014-02-19 10:05:27现任管理团队成员
日期:2011-05-07 01:45:08
219#
发表于 2011-12-15 10:34 | 只看该作者
请教myth8860:

我建的某个表中包含如下字段:
  1. created TIMESTAMP WITH TIME ZONE NOT NULL
复制代码
在JDBC程序中我使用PreparedStatement语句写入数据如下:

  1. java.sql.Timestamp created = new java.sql.Timestamp(new java.util.Date().getTime());
  2. stmt.setTimestamp(7, created);
复制代码
程序报错:
  1. Error: 类型转换异常
  2. java.sql.SQLException: 类型转换异常
  3.         at dm7.jdbc.dbaccess.DBError.throwSQLException(DBError.java:59)
  4.         at dm7.jdbc.driver.DmdbSetValue.setTimestamp(DmdbSetValue.java:1401)
  5.         at dm7.jdbc.driver.DmdbPreparedStatement_bs.setTimestamp(DmdbPreparedStatement_bs.java:1062)
  6.         at dm7.jdbc.driver.DmdbPreparedStatement.setTimestamp(DmdbPreparedStatement.java:428)
  7.         at dbtest.DMtest.insertTest(DMtest.java:53)
  8.         at dbtest.DMtest.main(DMtest.java:70)
复制代码
如果把建表的WITH TIME ZONE去掉,则正常。
请问,要支持WITH TIME ZONE插入数据,该如何写代码?


使用道具 举报

回复
论坛徽章:
277
马上加薪
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11版主9段
日期:2012-11-25 02:21:03ITPUB年度最佳版主
日期:2014-02-19 10:05:27现任管理团队成员
日期:2011-05-07 01:45:08
220#
发表于 2011-12-15 11:40 | 只看该作者
感受佳:DM数据库的插入速度是MySQL的10倍以上;
待改进:DM数据库的文档还是过少,遇到问题很难排查。

DM数据库管理系统v7.1测试
1、新建数据库实例


数据库控制文件:dmdbms\data\dm_test\dm.ctl
数据文件:dmdbms\data\dm_test\SYSTEM.DBF,
          dmdbms\data\dm_test\ROLL.DBF,
          dmdbms\data\dm_test\TEMP.DBF,
          dmdbms\data\dm_test\MAIN.DBF
日志文件:dmdbms\data\dm_test\dm_test01.log
          dmdbms\data\dm_test\dm_test02.log

2、DM的Web服务器
输入http://localhost:8080/isql,

3、测试实战
3.1、测试的MySQL脚本:
  1. CREATE DATABASE /*!32312 if not exists*/`dm_test` /*!40100 default character set utf8 */;

  2. USE `dm_test`;

  3. DROP TABLE IF EXISTS `contacts`;

  4. CREATE TABLE `contacts` (
  5.   `contact_id` VARCHAR(40) NOT NULL,
  6.   `password` VARCHAR(40) NOT NULL,
  7.   `first_name` VARCHAR(40) NOT NULL,
  8.   `last_name` VARCHAR(60) NOT NULL,
  9.   `company_name` VARCHAR(60) DEFAULT NULL,
  10.   `email` VARCHAR(255) DEFAULT NULL,
  11.   `created` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  12.   PRIMARY KEY (`contact_id`)
  13. ) ENGINE=INNODB DEFAULT CHARSET=utf8;

  14. DROP TABLE IF EXISTS `orders`;

  15. CREATE TABLE `orders` (
  16.   `order_id` INT(11) NOT NULL AUTO_INCREMENT,
  17.   `contact_id` VARCHAR(40) NOT NULL,
  18.   `product` VARCHAR(40) NOT NULL,
  19.   `quantity` INT(11) NOT NULL,
  20.   `price` DOUBLE NOT NULL,
  21.   `status` VARCHAR(20) NOT NULL DEFAULT 'unverified',
  22.   `created` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  23.   PRIMARY KEY (`order_id`),
  24.   KEY `contact_id` (`contact_id`),
  25.   CONSTRAINT `orders_ibfk_1` FOREIGN KEY (`contact_id`) REFERENCES `contacts` (`contact_id`) ON DELETE CASCADE ON UPDATE CASCADE
  26. ) ENGINE=INNODB DEFAULT CHARSET=utf8;

  27. DROP TABLE IF EXISTS `support`;

  28. CREATE TABLE `support` (
  29.   `support_id` INT(11) NOT NULL AUTO_INCREMENT,
  30.   `contact_id` VARCHAR(40) NOT NULL,
  31.   `code` VARCHAR(10) NOT NULL,
  32.   `status` VARCHAR(20) NOT NULL,
  33.   `phone` VARCHAR(20) DEFAULT NULL,
  34.   `email` VARCHAR(255) DEFAULT NULL,
  35.   `request` VARCHAR(255) NOT NULL,
  36.   `created` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  37.   PRIMARY KEY (`support_id`),
  38.   KEY `contact_id` (`contact_id`),
  39.   CONSTRAINT `support_ibfk_1` FOREIGN KEY (`contact_id`) REFERENCES `contacts` (`contact_id`) ON DELETE CASCADE ON UPDATE CASCADE
  40. ) ENGINE=INNODB DEFAULT CHARSET=utf8;
复制代码
3.2、在达梦DM管理工具下,执行:
  1. --创建表空间
  2. CREATE TABLESPACE dm_test DATAFILE 'dm_test.DBF' size 60;

  3. --创建模式
  4. CREATE SCHEMA business;

  5. --创建表
  6. --CREATE business.contacts
  7. create table business.contacts
  8. (
  9.         contact_id VARCHAR(40) NOT NULL PRIMARY KEY,
  10.         password VARCHAR(40) NOT NULL,
  11.         first_name VARCHAR(40) NOT NULL,
  12.         last_name VARCHAR(60) NOT NULL,
  13.         company_name VARCHAR(60) DEFAULT NULL,
  14.         email VARCHAR(255) DEFAULT NULL,
  15.         created TIMESTAMP NOT NULL
  16. ) STORAGE (on dm_test);
  17. --创建表
  18. --CREATE business.orders
  19. create TABLE business.orders
  20. (
  21.         order_id INT IDENTITY(1,1) PRIMARY KEY,
  22.         contact_id VARCHAR(40) NOT NULL REFERENCES business.contacts(contact_id),
  23.         product VARCHAR(40) NOT NULL,
  24.         quantity INT NOT NULL,
  25.         price DECIMAL(10,2) NOT NULL,
  26.         status VARCHAR(20) NOT NULL default 'unverified',
  27.         created TIMESTAMP NOT NULL
  28. ) STORAGE(ON "DM_TEST", CLUSTERBTR);
  29. --创建表
  30. --CREATE business.support
  31. create TABLE business.support
  32. (
  33.         support_id INT IDENTITY(1,1) PRIMARY KEY,
  34.         contact_id VARCHAR(40) NOT NULL REFERENCES business.contacts(contact_id),
  35.         code VARCHAR(10) NOT NULL,
  36.         status VARCHAR(20) NOT NULL,
  37.         phone VARCHAR(20) DEFAULT NULL,
  38.         email VARCHAR(255) DEFAULT NULL,
  39.         request VARCHAR(255) NOT NULL,
  40.         created TIMESTAMP NOT NULL
  41. ) STORAGE(ON "DM_TEST", CLUSTERBTR);
复制代码
3.3、MySQL测试程序如下:
  1. import java.sql.Connection;
  2. import java.sql.DriverManager;
  3. import java.sql.PreparedStatement;
  4. import java.sql.SQLException;
  5. import java.util.Date;

  6. public class MySQLtest {
  7.         private static String driver = "com.mysql.jdbc.Driver";
  8.         private static String db_url = "jdbc:mysql://localhost:3306/dm_test?characterEncoding=utf8";
  9.         private static String user = "ccesengine";
  10.         private static String password = "NAVE-LEX9";

  11.         public void insertTest(int times) throws SQLException {
  12.                 PreparedStatement stmt = null;
  13.                 Connection conn = null;
  14.                 try {
  15.                         Class.forName(driver);
  16.                         conn = DriverManager.getConnection(db_url, user, password);
  17.                         String sql = "INSERT INTO contacts(contact_id,password,first_name,last_name,company_name,email,created) VALUES(?,?,?,?,?,?,?)";
  18.                        
  19.                         for(int i=0; i<times; i++){
  20.                                 stmt = conn.prepareStatement(sql);
  21.                                
  22.                                 String contact_id = Utils.randomNumeric(40);
  23.                                 String password = Utils.randomString(40);
  24.                                 String first_name = Utils.randomString(40);
  25.                                 String last_name = Utils.randomString(60);
  26.                                 String company_name = Utils.randomString(60);
  27.                                 String email = Utils.randomString(14) + "@sina.com.cn";
  28.                                 java.sql.Timestamp created = new java.sql.Timestamp(new Date().getTime());
  29.                                
  30.                                 stmt.setString(1, contact_id);
  31.                                 stmt.setString(2, password);
  32.                                 stmt.setString(3, first_name);
  33.                                 stmt.setString(4, last_name);
  34.                                 stmt.setString(5, company_name);
  35.                                 stmt.setString(6, email);
  36.                                 stmt.setTimestamp(7, created);

  37.                                 stmt.executeUpdate();
  38.                         }
  39.                 } catch (Exception e) {
  40.                         System.err.println("Error: " + e.getMessage());
  41.                         e.printStackTrace();
  42.                 } finally {
  43.                         stmt.close();
  44.                         conn.close();
  45.                 }
  46.         }
  47.        
  48.         public static void main(String[] args) throws SQLException{
  49.                 MySQLtest test = new MySQLtest();
  50.                 long d1 = new Date().getTime();
  51.                 test.insertTest(100);
  52.                 long d2 = new Date().getTime();
  53.                 System.out.println("插入100条记录所需的时间为: " + (d2-d1) + "毫秒");
  54.                 long d3 = new Date().getTime();
  55.                 test.insertTest(1000);
  56.                 long d4 = new Date().getTime();
  57.                 System.out.println("插入1000条记录所需的时间为: " + (d4-d3) + "毫秒");
  58.                 long d5 = new Date().getTime();
  59.                 test.insertTest(5000);
  60.                 long d6 = new Date().getTime();
  61.                 System.out.println("插入5000条记录所需的时间为: " + (d6-d5) + "毫秒");
  62.         }
  63. }
复制代码
3.4、DM数据库测试程序如下:
  1. import java.sql.Connection;
  2. import java.sql.DriverManager;
  3. import java.sql.PreparedStatement;
  4. import java.sql.SQLException;
  5. import java.util.Date;

  6. public class DMtest {
  7.         private static String driver = "dm7.jdbc.driver.DmDriver";
  8.         private static String db_url = "jdbc:dm://localhost:5236";
  9.         private static String user = "SYSDBA";
  10.         private static String password = "adminadmin";
  11.        
  12.         public void insertTest(int times) throws SQLException {
  13.                 PreparedStatement stmt = null;
  14.                 Connection conn = null;
  15.                 try {
  16.                         Class.forName(driver);
  17.                         try {
  18.                                 conn = DriverManager.getConnection(db_url, user, password);
  19.                         } catch (SQLException e) {
  20.                                 throw new SQLException("Connect to DM Server Error : "
  21.                                    + e.getMessage());
  22.                         }
  23.                         String sql = "INSERT INTO business.contacts(contact_id,password,first_name,last_name,company_name,email,created) VALUES(?,?,?,?,?,?,?)";
  24.                        
  25.                         for(int i=0; i<times; i++){
  26.                                 stmt = conn.prepareStatement(sql);
  27.                                
  28.                                 String contact_id = Utils.randomNumeric(40);
  29.                                 String password = Utils.randomString(40);
  30.                                 String first_name = Utils.randomString(40);
  31.                                 String last_name = Utils.randomString(60);
  32.                                 String company_name = Utils.randomString(60);
  33.                                 String email = Utils.randomString(14) + "@sina.com.cn";
  34.                                 java.sql.Timestamp created = new java.sql.Timestamp(new java.util.Date().getTime());
  35.                                
  36.                                 stmt.setString(1, contact_id);
  37.                                 stmt.setString(2, password);
  38.                                 stmt.setString(3, first_name);
  39.                                 stmt.setString(4, last_name);
  40.                                 stmt.setString(5, company_name);
  41.                                 stmt.setString(6, email);
  42.                                 stmt.setTimestamp(7, created);

  43.                                 stmt.executeUpdate();
  44.                         }
  45.                 } catch (Exception e) {
  46.                         System.err.println("Error: " + e.getMessage());
  47.                         e.printStackTrace();
  48.                 } finally {
  49.                         stmt.close();
  50.                         conn.close();
  51.                 }
  52.         }
  53.        
  54.         public static void main(String[] args) throws SQLException{
  55.                 DMtest test = new DMtest();
  56.                 long d1 = new Date().getTime();
  57.                 test.insertTest(1);
  58.                 long d2 = new Date().getTime();
  59.                 System.out.println("插入100条记录所需的时间为: " + (d2-d1) + "毫秒");
  60.                 long d3 = new Date().getTime();
  61.                 test.insertTest(1000);
  62.                 long d4 = new Date().getTime();
  63.                 System.out.println("插入1000条记录所需的时间为: " + (d4-d3) + "毫秒");
  64.                 long d5 = new Date().getTime();
  65.                 test.insertTest(5000);
  66.                 long d6 = new Date().getTime();
  67.                 System.out.println("插入5000条记录所需的时间为: " + (d6-d5) + "毫秒");
  68.         }
  69. }
复制代码
3.5、比较条件
1、软件版本
达梦数据库:DM  v7.1
MySQL:5.1.53 community 32位
2、其它
其它软硬件相同,在同一台台式机,Windows XP操作系统上运行。MySQL安装配置为开发机,未做优化。

3.6、测试结果:


3.7、结论:
感受佳:DM数据库的插入速度是MySQL的10倍以上;
待改进:DM数据库的文档还是过少,遇到问题很难排查。
比如我遇到的问题:String urlString = "jdbc:dm7://localhost:5236" 连接不上。直到达梦的高人告诉我,DM7为了向下兼容DM6,连接又改回了String urlString = "jdbc:dm://localhost:5236" 。可惜文档没有更新,如果没人指点,我就进行不下去了。

我只是粗略地进行了个测试,大家看了后可以对DM数据库有个稍微理性的认识。国产数据库其实做得很好!

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表