V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
HOMO114514
V2EX  ›  程序员

分享一些 500 强信创数据库的有趣故事吧

  •  2
     
  •   HOMO114514 · 101 天前 · 6509 次点击
    这是一个创建于 101 天前的主题,其中的信息可能已经有所发展或是发生改变。
    1. 数据库的集群间节点互访通过 SSL 加密传输来保证安全性,非生产环境下,SSL 证书通过标准的 openssl 自签流程生成。openssl 自签证书的最长有效期是 10 年,然而直到今年 5 月之前,该数据库产品并未在管控平台提供任何证书过期的告警监控。
    2. 某些数据库的规则中,视空字符串''为有效的内容,但是 Oracle 和兼容 Oracle 的数据库会将''视作NULL。 以此为前置条件,使用信创数据库官方的迁移平台进行数据迁移,将某个有NOT NULL列且包含大量''的表迁移到信创数据库中,竟然能够顺利执行。落库后经过查询,发现''被转换成了一个没有内容、不是 NULL 、长度为 0 (正常情况下,NULL的长度为NULL)、显示为空、强转十六进制后显示为0x(即 RAW 值也为空)、无法通过任何 where 条件选中(IS NULL=''等)的东西。
    3. 我们已知该数据库的 Oracle 兼容模式下将''等价为NULL,但是我可以在数据库里创建一个带有列COLNAME VARCHAR(n) NOT NULL DEFAULT ''的表。表现是如果进行INSERT不指定该列的值,直接出发违反约束的 ERROR 。
    4. 客户一直在进行信创数据库的 API 长期测试。信创数据库由内核软件提供一组 API ,再由管理平台对内核 API 进行二次封装。前阵子开发向技术支持反馈,有一个基础功能的 API 接口调用一直有问题,调用失败。客户、驻场 DBA 、技术支持上下游联合调试了两天,最后数据库那边的 Developer 发现,这个接口的定义和使用方法虽然写在了《 API 手册》中,但是数据库本身根本就没有实现,是个虚空接口。
    50 条回复    2024-07-27 10:15:13 +08:00
    rainmint
        1
    rainmint  
       101 天前
    国产? 那没事了
    Leviathann
        2
    Leviathann  
       101 天前   ❤️ 1
    不是 pg 套壳?
    jstony
        3
    jstony  
       101 天前
    嗯嗯,不急,罗马不是一天建成的,又不是不能用,呃...编不下去了,哈哈。
    zhangeric
        4
    zhangeric  
       101 天前
    软件有 bug 很正常,关键是修复 bug 得态度和速度.
    skuuhui
        5
    skuuhui  
       101 天前
    创肯定要创,但是真的用就是你们自己的问题了。创是给上面看的,就客观唯物主义理论来说,本来应该做好 2 种同时存在同时长期使用的事实,或许你们数据库的 api 只需要未实现的接口
    yifangtongxing28
        6
    yifangtongxing28  
       101 天前
    有问题,才能养活一群工程师嘛
    jasonkayzk
        7
    jasonkayzk  
       101 天前
    哈哈,很符合对信创的印象!
    Laobai
        8
    Laobai  
       101 天前
    高斯?
    HOMO114514
        9
    HOMO114514  
    OP
       101 天前   ❤️ 1
    再补充一个很难绷的事情 差点忘记了
    6. 这个数据库一开始大肆宣传建设开源共创社区,发行了一个开源版,还煞有介事地搞了一系列的培训和认证体系。本质上是因为要遵守 GPL 协议必须开源,开源版的发行基线基本上是比商用版落后 1-2 个大版本。
    最近这个数据库艰难地完成了 100%国产自主可控的认证,代表着对于工信部,它所有的代码都是自己的,因此也不再有遵循 GPL 协议的需要,后续开源版将会直接放弃。
    qviqvi
        10
    qviqvi  
       101 天前
    话说如果用 pg 或 mysql ,有被制裁的风险吗?好像伊朗也能用开源软件吧。政府用信创也就算了,普通企业用信创真难受
    murmur
        11
    murmur  
       101 天前
    oracle 兼容模式,人大金仓?
    murmur
        12
    murmur  
       101 天前   ❤️ 2
    @qviqvi 不是被制裁的风险,如果用 pg 、mysql ,数据丢了,是你的问题,你选的开源软件,如果是国产数据库,这是支持国产不可避免的代价,我们支持国产化,锅甩出去了
    EIJAM
        13
    EIJAM  
       101 天前 via Android
    @skuuhui 用这东西的要么是国企,要么是给 gov 和国企开发产品的,都是不得不用。真有的选谁会选信创这种垃圾
    dbskcnc
        14
    dbskcnc  
       101 天前
    本来是他们自己内部自己吃翔,但是现在搞得很多人要跟着他们吃翔,并且打着伟光正的旗号,有其它好吃的你也不能吃,这个就很恶心。 所以自由,民主虽然不能当饭吃,但是它基本可以让你想吃饭的时候就吃饭,不用被迫吃翔。
    airportIllIl
        15
    airportIllIl  
       101 天前 via Android
    某些厂商的策略就是,让客户来做测试,出了问题一块解决,给大客户提供专门技术支持,小客户就自求多福
    messaround
        16
    messaround  
       101 天前
    爽吧?
    UN2758
        17
    UN2758  
       101 天前   ❤️ 1
    虚空接口,太艹了,PM 在干嘛,测试在干嘛,世界果然是一个巨大的草台班子,快说出厂商名字,我要去混工资
    brom111
        18
    brom111  
       101 天前
    很久之前不是有个幽默说法吗。数据太大查询速度慢,把数据导入到 oracle 才能查
    ExplodingFKL
        19
    ExplodingFKL  
       101 天前
    草,不会是某 G 开头的 DB 数据库吧
    ownSun
        20
    ownSun  
       101 天前
    @ExplodingFKL #19 现在信创的数据库指定这个把
    sun1991
        21
    sun1991  
       101 天前
    #2 没看懂.
    Oracle Not Null 列里面存在了大量空字串''的值? 怎么进去的?
    fyooo
        22
    fyooo  
       101 天前 via iPhone
    哈哈,有意思,谢谢分享
    crz
        23
    crz  
       101 天前
    @sun1991 看描述,合理的理解可能是,源不是 oracle 兼容,或者自定义规则空字符串有效,信创库是 oracle 兼容,导入后空字符串因为某种机制转换为无效值
    iyaozhen
        24
    iyaozhen  
       101 天前   ❤️ 1
    工作中遇到过类似的事情 问过大领导,我们能不能不做这块

    领导说:这块的钱你赚不赚,不赚就可以不做。其实答案很明显,要是马云说吃一口💩给 1w ,我能给马云吃破产。
    Lighfer
        25
    Lighfer  
       101 天前
    不用猜,就是达梦
    random1221
        26
    random1221  
       101 天前
    到底是哪一家啊
    forsuperper
        27
    forsuperper  
       101 天前   ❤️ 2
    500 强 开源,集群节点。。。这个几个合起来就是爱国
    kenvix
        28
    kenvix  
       101 天前
    华为?
    HOMO114514
        29
    HOMO114514  
    OP
       101 天前   ❤️ 1
    @sun1991
    源库里`''`是有效的非空值,比如 DB2 、SQL Server ,但客户方统一规定信创数据库使用 Oracle 兼容模式,即`''`等价`NULL`。
    预期当中,这个库里的数据应该根本导入不了信创数据库的,在导入过程就应该触发违反非空约束。
    ZZ74
        30
    ZZ74  
       101 天前
    太久没结束数据库,我咋记得 oralce 空 和 null 两码事啊.... 难道记反了 以前写 IS NOT NULL/IS NULL 后面得跟一个是否空的判断
    random1221
        31
    random1221  
       101 天前
    @ZZ74 你记错了,oracle 不区分''和 null
    bugmaker233
        32
    bugmaker233  
       101 天前
    又不是不能用.jpg
    bug51
        33
    bug51  
       101 天前
    华为?
    sun1991
        34
    sun1991  
       101 天前
    @HOMO114514
    @crz
    哈哈, 明明可以 fail early, fail fast, 就是要搞事情. 就好像修 bug 时, 吃掉 exception 不处理装作一切太平.
    AAAAAAAAAAAAAAAA
        35
    AAAAAAAAAAAAAAAA  
       101 天前
    达梦吗
    hihanley
        36
    hihanley  
       101 天前
    达梦
    dbpe
        37
    dbpe  
       101 天前
    兼容 oracle 达梦么?
    dbpe
        38
    dbpe  
       101 天前
    @Leviathann 真的是套壳就谢天谢地了..最烦的加作料
    codingmiao
        39
    codingmiao  
       101 天前
    @HOMO114514 这顿操作没看明白,为了遵守 GPL 开源,但是所谓自主可控后为什么就不需要遵守 GPL 了?那别人用的过程中发现他基于 GPL 的代码痕迹,那他不完蛋了。。
    mark2025
        40
    mark2025  
       101 天前
    人在信创 公众号?
    HOMO114514
        41
    HOMO114514  
    OP
       101 天前   ❤️ 1
    @codingmiao
    自主可控,意味着“代码 100%纯自研”,意味着名义上“不借助任何的开源项目实现”,既然我名义上都不用它的代码了,我当然不需要遵守它的 GPL 协议

    信创客户都是国产企业,都是国内自产自销,私有化部署的全是银行这种高度隔离的大客户,其它客户只能用云上服务和云底座,很难接触到数据库二进制程序。用户群够小,出了舆情精准定位和处理非常轻松,谁会因为所谓的开源正义丢了自己饭碗呢?

    而且真有人能把这整个数据库系统的代码或者二进制文件偷去给国际的开源警察审查,他首先会吃到国安+法务的组合拳,这可是正儿八经的泄敌

    再说了,国内目前处于蛮荒的开源环境,不遵守协议,他又奈我何?……
    dyllen
        42
    dyllen  
       101 天前
    @qviqvi 就是说的什么被制裁的风险,代码都在我手上了,还怕什么制裁呀,后面升级我不要了,自我发展。实际也没见过那个开源软件伊朗,朝鲜用不了的,还有谁比他俩的制裁还严重的吗?
    ShuWei
        43
    ShuWei  
       101 天前
    我怎么感觉 2 、3 其实没啥问题,仅仅是因为 op 带着第三方的刻板印象
    macha
        44
    macha  
       101 天前
    我就做过 Oracle 兼容,太难搞了。从 SQL 解析改到查询计划,当时都快吐血了。
    PopRain
        45
    PopRain  
       101 天前
    @HOMO114514 这个就是胡整了,原来数据库里面有空字符串,说明应用是支持的,为什么要切换到 ORACLE 模式,应用支持吗?数据库改好再去改应用,神经两次?
    iseki
        46
    iseki  
       101 天前 via Android
    2 难道不是数据库 bug 吗,自己内部都不一致了
    HOMO114514
        47
    HOMO114514  
    OP
       101 天前
    @PopRain
    强制要求全部应用系统使用 ORACLE 模式是客户方数据库中心定的开发规范,类似的规定还有禁止使用 Procedure 等。
    迁移到新的数据库,就要从头树立新的、良好的开发规范。不然以后随着业务迭代,留下来的屎山就又收不住了,比如 MySQL 的 UTF8 和 UTF8mb4
    PopRain
        48
    PopRain  
       101 天前
    @HOMO114514 那你也应该应用先改好,把原来的数据库整理好再去迁移数据吧。支持空字符的数据库应用,我不相信不改就能没有问题跑起来。
    另外, 迁移工具毕竟不是数据库厂商的主业,完善程度肯定不如数据库本身,之前试 MySQL 官方的 workbench 迁移工具,安装就遇到各种问题,需要自己去改 python ,才 30G 的数据库都迁移不到 MySql 。。。 最后还是自己写的迁移工具。
    HOMO114514
        49
    HOMO114514  
    OP
       101 天前
    @PopRain
    恰恰相反,我们这边的信创流程都是先把数据迁移弄好,迁移完之后带着迁移报告、开发规范、改造指南一并交接应用,再让应用接入适配、改造、联调联测
    “迁移工具毕竟不是数据库厂商的主业”,常规开发是这样的,但是信创信创,讲国产替代就一定会有被替代的 DB 在,所以信创数据库的迁移工具都会全力以赴去适配某些 DB ,尤其是 Oracle 。迁移都做不好怎么去替代呢?
    xausky
        50
    xausky  
       100 天前
    pgsql 的代码非改出个 mysql 兼容模式和 orcale 兼容模式,出问题不是很正常么
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   980 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 20:50 · PVG 04:50 · LAX 12:50 · JFK 15:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.