数据库国产化之路(一)

数据库国产化之路(一)

1、前言:适配海量数据库过程中的一些记录,备忘用

2、海量数据库基于的pg版本,查看PG_VERSION文件为9.2。

3、MySQL中的IF函数替代,一开始的方案是从网上找了个if函数,后来发现CASE WHEN其实能完成三元运算。

-- MySQL的IF函数,完成三元运算
SELECT 
	IF((field_rename IS NOT NULL AND field_rename <> ''), field_rename, field_name) AS "fieldName"
FROM archive_field_control 	

-- 海量数据库/PostgreSQL
SELECT 
	CASE WHEN (field_rename IS NOT NULL AND field_rename <> '') THEN field_rename ELSE field_name END AS "fieldName"
FROM archive_field_control 

-- 仔细看下面转换时的区别,在MySQL中存在很多隐士类型转换,比如IF中第一个参数,只要大于0,就是true,而在PG中不能这样写,必须严格写好数据类型,与0进行比较返回bool值
-- MySQL的IF函数,完成三元运算
SELECT
	IF((SELECT COUNT(*) FROM archive_field_control afc WHERE afc.field_id = af.id),1,0) AS "field_use"
FROM archive_field af

-- 海量数据库/PostgreSQL
SELECT
	CASE WHEN ((SELECT COUNT(*) FROM archive_field_control afc WHERE afc.field_id = af.ID )>0) THEN 1 ELSE 0 END AS "field_use"
FROM archive_field af

4、海量数据库中,给字段设置为空字符,在数据库中存的是null(不知道是否进行了个性化设置,原因未知)
验证了MySQL、翰高、pg数据库,不会出现这种情况。下面是测试记录。

在这里插入图片描述

5、海量数据库不支持 RESTART IDENTITY

# 清空表不能使用RESTART IDENTITY重置序列,这个特性从pg10开始有
TRUNCATE archive_field_control RESTART IDENTITY;

-- 设置序列的值;有数据时,最大id+1,没有数据时从1开始,通过调整is_called true或false,true时从下一个值开始,false时从当前值开始
SELECT setval('archive_field_control_id_seq', (select COALESCE(max(id),1) from archive_field_control), (SELECT (SELECT CASE WHEN (SELECT(SELECT max(id) from archive_field_control) IS NULL) THEN FALSE ELSE TRUE END)));

6、在海量数据库中其他注意事项

-- 这里面的condtion field_rename IS NOT NULL AND field_rename <> '' 或者 field_rename IS NOT NULL AND field_rename != '',不能返回预期结果(不管是本身未设置值还是设置了空字符'',条件竟然会返回true,有点凌乱)
CASE WHEN (field_rename IS NOT NULL AND field_rename <> '') THEN field_rename ELSE field_name END AS "fieldName"

-- 把后面的空字符判断去掉可以返回预期结果(前面验证过他空值也会存为null,这里直接判断null,歪打正着么)
CASE WHEN (field_rename IS NOT NULL) THEN field_rename ELSE field_name END AS "fieldName"

7 参考

https://docs.vastdata.com.cn/zh_CN/VastbaseG100/V2.2.10/1
https://docs.vastdata.com.cn/zh_CN/VastbaseG100/V2.2.10/1/f1cc3016482441b5976fe9903b73fb8b

小尾巴~~
只要有积累,就会有进步

效益指标数据库国产化是指在数据管理、存储及分析过程中,采用国内自主研发的数据库产品替代国外同类产品,并评估其带来的综合经济效益、技术自主性和安全性提升。 ### 经济效益 1. **成本节约**:国产数据库产品相较于国际品牌,通常定价更为合理,在采购初期即能节省部分投资费用;同时,长期运维成本也相对较低。 2. **税收优惠**:部分国家和地区对于使用本土技术产品的企业给予税收减免等优惠政策,进步降低企业的运营成本。 3. **资金流转**:促进国内产业链发展,有助于减少外汇支出,增加国内资本循环。 ### 技术自主性 1. **关键核心技术掌握**:通过支持和推广国产数据库,增强了对关键信息基础设施和技术的控制能力,减少了对外部供应商的依赖,提升了信息技术安全。 2. **创新推动**:鼓励技术创新和研发,加速我国数据库领域的技术进步和产业升级。 ### 安全性 1. **隐私保护**:国产数据库能够更好地满足本地法规要求,提供更严格的数据安全和隐私保护措施。 2. **风险防范**:避免因外部政治、经济等因素导致的关键信息资源中断或泄露的风险。 3. **可控性强**:在敏感数据处理方面,可以更紧密地控制访问权限和操作流程,提高数据安全防护水平。 ### 实施挑战 1. **成熟度与兼容性**:部分国产数据库在功能完备性、性能优化以及与其他系统的集成兼容性上仍需持续改进。 2. **人才培养**:需要加强专业人才培养,提升本土技术人员对国产数据库的理解和应用能力。 3. **生态建设**:构建完善的国产数据库生态体系,包括软件开发工具、第三方服务提供商等配套支持。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值