国产数据库?

以北京某政府政务系统为例,该系统原使用Oracle数据库,改用国产KingbaseES数据库前,人大金仓和应用开发商准备多版本切换及应用处理方案,对数据兼容性大量测试,先作备用数据库试运行,一段时间后才正式使用,凸显国产数据库推广不易。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

http://www.youkuaiyun.com/news/newstopic/20/20911.shtml
多好的一篇帖子啊,和Oracle、Sybase等可以媲美啊。怀着无比的憧憬到http: //www.kingbase.com.cn/docc/download_cp.htm下载了一个,刚下来的时候我以为自己看错了,7.6M?不管它, 小个头的正好,免费下载的是for Win32的版本,环境也正好。初始化一下数据库,然后重启服务,Ok,一切正常。打开查询工具一看,和SqlServer有点像,数据字典方面又有点像 Oracle,不过内容很少,不像Oracle的,看起来就头疼。
        没做别的事情,测试一下稳定性咯,也正是文章里反复强调的稳定性。create了一个test表,就一列integer(类似TSQL) ,然后插入若干个10,手工从任务管理器中删除kingbase的进程,没多久查询管理器就发现了问题,报错,可是只有一个选项——重新连接,连接自然失 败,然后又是重连……无语……强行关闭咯
        进Windows服务重启数据库服务,重新打开查询管理器,不出所料,所有的test表都没了。没提交?呵呵,Kingbase确实是非自动提交的,类似 oracle机制。于是将上面的过程反复了一遍,唯一添加的就是在删除进程前点击了那个提交按钮。结果一样,令我匪夷所思的是连表都没有!内容丢了也就算 了,表都没有,那以后不是数据字典的内容也可能出问题?也就是说如果机器运行时掉电,什么都没了……

<quote>

下面的例子足可以说明国产数据库推广的艰辛:北京某政府用户的政务系统一直是使用Oracle数据库,在改为使用国产KingbaseES数据库之前,各方进行了多次反复论证,人大金仓和应用开发商一起,

至少准备了三个版本的系统切换方案和应用处理方案,并就KingbaseOracle之间的数据兼容性进行了大量测试,才获得用户首肯,但也只是用作Oracle的备用数据库,每周末把系统切换到KingbaseES数据库上试运行,验证有无问题。一段时间后,才得以正式使用。承受的怀疑和付出的工作量可想而知。

</quote>

        我只能同情那个系统的DBA了,他除了备份备份再备份,恐怕是睡不着觉的。一个7.6MB的数据库如果可以比过至少650MB的Oracle,那么Elllison可以回家卖红薯了。

<quote>
         一个有趣的现象是,中国人已经由当年的盲目信仰,相信一切变成今天的不相信一切。当神州5号上天时,有人说,这是中国人做的吗?当龙芯诞生时,又有人说,肯定是利用国外的技术做的。国产数据库也是在怀疑与不屑中艰难前行。

</quote>

        有大量的事实在那里,又怎么能让人相信?之前怀疑的那些也看过相关文章,还没有多大切身体会,这次……唯一想说的就是,纳税人的钱为什么要这么用掉,是不是参加所谓“
获得北京市科技进步二等奖和国家教育部科技进步二等奖”的评委们是不是敢于负起这个责任?
### 如何连接数据库 #### Java 中通过 JDBC 连接 MySQL 数据库 在 Java 中,可以使用 JDBC(Java Database Connectivity)来实现与数据库的交互。以下是基于引用中的描述以及标准实践的一个完整示例: 1. **加载驱动程序并建立连接** 需要先导入相应的 JDBC 驱动包,并调用 `Class.forName()` 方法显式加载驱动类[^1]。 2. **获取数据库连接** 使用 `DriverManager.getConnection(String url, String user, String password)` 来获得数据库连接实例。 ```java import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class DBConnectionExample { public static void main(String[] args) { Connection conn = null; try { // 加载 MySQL 驱动程序 Class.forName("com.mysql.cj.jdbc.Driver"); // 定义数据库 URL 和登录凭证 String url = "jdbc:mysql://localhost:3306/mydatabase"; String username = "root"; String password = "password"; // 获取数据库连接 conn = DriverManager.getConnection(url, username, password); System.out.println("数据库连接成功!"); } catch (ClassNotFoundException e) { System.err.println("无法找到 MySQL 驱动:" + e.getMessage()); } catch (SQLException e) { System.err.println("数据库连接失败:" + e.getMessage()); } finally { if (conn != null) { try { conn.close(); } catch (SQLException e) { System.err.println("关闭数据库连接时发生异常:" + e.getMessage()); } } } } } ``` --- #### Python 中连接不同类型的数据库 Python 提供了多种方式用于连接不同的关系型数据库。以下分别展示了 SQLite、MySQL 和 PostgreSQL 的连接方法[^3]。 ##### 1. 连接到 SQLite 数据库 SQLite 是一种轻量级嵌入式数据库,适合小型应用开发。 ```python import sqlite3 try: # 建立连接 conn = sqlite3.connect('example.db') # 创建游标对象 cursor = conn.cursor() # 查询数据表 cursor.execute("SELECT * FROM users") rows = cursor.fetchall() for row in rows: print(row) except Exception as e: print(f"查询过程中出现问题:{e}") finally: # 关闭连接 if conn: conn.close() ``` ##### 2. 连接到 MySQL 数据库 对于更复杂的场景,可以选择 MySQL 或其他大型数据库管理系统。 ```python import mysql.connector try: # 建立连接 conn = mysql.connector.connect( host='localhost', user='your_username', password='your_password', database='test_db' ) # 创建游标对象 cursor = conn.cursor() # 执行 SQL 查询 cursor.execute("SELECT * FROM products") results = cursor.fetchall() for result in results: print(result) except mysql.connector.Error as err: print(f"MySQL 错误:{err}") finally: if conn.is_connected(): conn.close() ``` ##### 3. 连接到 PostgreSQL 数据库 PostgreSQL 支持高级功能,适用于高并发环境下的复杂业务逻辑。 ```python import psycopg2 try: # 建立连接 conn = psycopg2.connect( dbname="postgres", user="admin", password="securepass", host="localhost" ) # 创建游标对象 cur = conn.cursor() # 执行 SQL 查询 cur.execute("SELECT id, name FROM employees;") records = cur.fetchall() for record in records: print(record) except psycopg2.DatabaseError as error: print(error) finally: if conn is not None and not conn.closed: conn.close() ``` --- #### 使用 IDE 插件简化数据库操作 除了编程接口外,还可以借助集成开发环境(IDE)中的插件工具完成可视化配置和调试工作。例如,在 Eclipse 中可以通过 DBeaver 等第三方扩展组件快速设置新连接[^2]。 具体流程如下: - 下载安装所需插件; - 启动软件后切换至 “Data” 视图界面; - 添加目标服务器地址及相关认证参数即可测试连通状态。 --- #### 国产 KingbaseES 数据库简介及其建模语法 针对国内用户群体推出的金仓数据库产品同样具备强大的兼容性和易用性特点[^4]。其核心优势在于支持主流标准的同时还融入了一些本地化改进措施。下述命令片段可用于初始化一个新的项目空间结构定义文件。 ```sql CREATE DATABASE xcLeigh WITH OWNER = system ENCODING 'UTF8' TEMPLATE template0 TABLESPACE sys_default lc_collate = 'zh_CN.UTF-8' lc_ctype = 'zh_CN.UTF-8' connection_limit = -1 allow_connections = TRUE is_template = FALSE; ``` ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值