国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

OB篇-關(guān)于約束不得不知道的事

IT那活兒 / 3720人閱讀
OB篇-關(guān)于約束不得不知道的事


01

事件背景

OceanBase數(shù)據(jù)庫是螞蟻集團不基于任何開源產(chǎn)品,完全自研的企業(yè)級分布式關(guān)系數(shù)據(jù)庫,在普通硬件上實現(xiàn)金融級高可用,首創(chuàng)“三地五中心”城市級故障自動無損容災(zāi)新標(biāo)準(zhǔn),具備卓越的水平擴展能力,全球首家通過TPC-C標(biāo)準(zhǔn)測試的分布式數(shù)據(jù)庫,20205月,OceanBase7.07tpmC的在線事務(wù)處理性能,打破了去年自己創(chuàng)造的TPC-C世界紀錄。截止至目前,OceanBase是第一個也是唯一一個上榜的中國數(shù)據(jù)庫。產(chǎn)品立項于2010年,具有數(shù)據(jù)強一致、高可用、高性能、在線擴展、高度兼容SQL標(biāo)準(zhǔn)和主流關(guān)系數(shù)據(jù)庫、低成本等特點。

OceanBase中開創(chuàng)性的可以創(chuàng)建兩種模式(mysql模式、oracle模式),因為我們現(xiàn)場使用Oracle模式,雖然兼容很多,但還是有些細微的差別,因為OMS遷移中涉及到了外鍵約束的問題,所以我簡單做了下測試,給大家分享下測試結(jié)論。

如果有興趣的同學(xué)可以登錄OB的官網(wǎng)找最新的文檔了解學(xué)習(xí)下。目前OB最新文檔是2.2.5版本中說目前OceanBase不支持通過ALTERTABLE語句增加或修改約束,2.2.7版本是支持alter的。


02

場景測試

OMS遷移的時候因為要起增量所以會創(chuàng)建四個隱藏列和一個約束,所以表上原來的外鍵約束會取消,約束語句會放在OMS機器的/home/admin/logs/post_ddl_1000068.sql中,這里的1000068是任務(wù)ID,在數(shù)據(jù)遷移完成后可以手工去創(chuàng)建。另外OB在創(chuàng)建約束時不支持NOVALIDATE我就針對這個問題做了以下測試。




創(chuàng)建外鍵約束



(1)環(huán)境準(zhǔn)備

在Oracle和OB分別創(chuàng)建測試表

oracle:

    SQL> create table emp(empno number(4) primary key,ename varchar2(10),depno number(4));

Table created.

SQL> create table  depth(deptno number(4) primary key,dname varchar2(14));

Table created.

OB:

obclient> create table emp(empno number(4) primary key,ename varchar2(10),depno number(4));

Query OK, 0 rows affected (0.09 sec)

obclient> create table  depth(deptno number(4) primary key,dname varchar2(14));

Query OK, 0 rows affected (0.04 sec)


插入數(shù)據(jù)

insert into  depth values (440,董事會);

insert into  depth values (330,財務(wù)部);

insert into emp values(1002,風(fēng)華,440);

insert into emp values(1003,白露,330);


oracle:

SQL> select * from emp;

     EMPNO ENAME           DEPNO

---------- ---------- ----------

      1002 風(fēng)華             440

      1003 白露             330

SQL> select * from depth;

    DEPTNO DNAME

---------- --------------

       440 董事會

       330 財務(wù)部


OB:

obclient> select * from emp;

+-------+--------+-------+

| EMPNO | ENAME  | DEPNO |

+-------+--------+-------+

|  1003 | 白露   |  330  |

|  1002 | 風(fēng)華   |  440  |

+-------+--------+-------+

2 rows in set (0.00 sec)

obclient> select * from depth;

+--------+-----------+

| DEPTNO | DNAME     |

+--------+-----------+

|    440 | 董事會    |

|    330 | 財務(wù)部    |

+--------+-----------+

2 rows in set (0.01 sec)



(2)不加NOVALIDATE創(chuàng)建約束測試

ORACLE:

SQL> ALTER TABLE emp  ADD CONSTRAINT "FK_EMP" FOREIGN KEY (DEPNO) REFERENCES depth (DEPTNO);

Table altered.

SQL>  select constraint_name,constraint_type,status,validated from user_constraints where  constraint_name=FK_EMP;

CONSTRAINT_NAME                C STATUS   VALIDATED

------------------------------ - -------- -------------

FK_EMP                         R ENABLED  VALIDATED


OB:

obclient> ALTER TABLE emp  ADD CONSTRAINT "FK_EMP" FOREIGN KEY (DEPNO) REFERENCES depth (DEPTNO);

Query OK, 0 rows affected (0.25 sec)

obclient>  select constraint_name,constraint_type,status,validated from user_constraints where  constraint_name=FK_EMP;

+-----------------+-----------------+--------+-----------+

| CONSTRAINT_NAME | CONSTRAINT_TYPE | STATUS | VALIDATED |

+-----------------+-----------------+--------+-----------+

| FK_EMP          | R               | NULL   | NULL      |

+-----------------+-----------------+--------+-----------+

1 row in set (0.02 sec)

可以看到不加NOVALIDATE在oracle和OB端都是可以正常創(chuàng)建外鍵約束的


(3)外鍵約束功能測試

不符合約束條件數(shù)據(jù)插入:

    oracle:

SQL> insert into emp values (1004,松風(fēng)閣,550);

insert into emp values (1004,松風(fēng)閣,550)

*

ERROR at line 1:

ORA-02291: integrity constraint (ZY_TEST.FK_EMP) violated - parent key not found


ob:

obclient> insert into emp values (1004,松風(fēng)閣,550);

ORA-02291: integrity constraint violated - parent key not found


符合約束條件數(shù)據(jù)插入:

oracle:

SQL> insert into   depth values (550,業(yè)務(wù)部);

1 row created.

SQL> insert into emp values (1004,松風(fēng)閣,550);

1 row created.


ob:

obclient> insert into   depth values (550,業(yè)務(wù)部);

Query OK, 1 row affected (0.01 sec)

obclient> insert into emp values (1004,松風(fēng)閣,550);

Query OK, 1 row affected (0.01 sec)

經(jīng)過插入數(shù)據(jù)測試,可以看到外鍵約束功能是正常的


(4) NOVALIDATE創(chuàng)建約束測試

oracle:

SQL> ALTER TABLE emp  DROP CONSTRAINT "FK_EMP" ;

Table altered.


ob:

obclient> ALTER TABLE emp  DROP CONSTRAINT "FK_EMP" ;

Query OK, 0 rows affected (0.14 sec)



oracle:

SQL> ALTER TABLE DEPTH  ADD CONSTRAINT "FK_DEPTH" FOREIGN KEY (deptno) REFERENCES EMP (empno) NOVALIDATE;

Table altered.


ob:

obclient> ALTER TABLE DEPTH  ADD CONSTRAINT "FK_DEPTH" FOREIGN KEY (deptno) REFERENCES EMP (empno) NOVALIDATE;

ORA-00900: You have an error in your SQL syntax; check the manual that corresponds to your OceanBase version for the right syntax to use near NOVALIDATE at line 1

加上NOVALIDATE條件之后在oracle可以正常創(chuàng)建外鍵約束,在OB端會報錯

03

分析總結(jié)

OB國產(chǎn)化數(shù)據(jù)庫還未大規(guī)模商業(yè)化,本身產(chǎn)品也處于不斷的發(fā)展和完善階段,隨著OB產(chǎn)品版本的快速迭代,官網(wǎng)文檔的更新也會有些滯后,所以我們在熟悉OB產(chǎn)品過程中不僅要學(xué)習(xí)文檔中的知識,更要多去實踐,驗證。現(xiàn)在網(wǎng)上公開資料很少,需要我們在實踐過程中學(xué)會總結(jié)經(jīng)驗和知識積累,完善自己的知識庫。

在工作過程中,因為OB屬于新數(shù)據(jù)庫,我們本身固有的經(jīng)驗也不一定完全適用OB的知識體系,所以要不斷更新自己的知識儲備與理解,這次的分享到此結(jié)束,希望這次的分享能幫助到大家。

End


文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/130050.html

相關(guān)文章

  • 關(guān)于Spring Boot你得不知道的事

    摘要:采用一套固化的認知來建立生產(chǎn)環(huán)境準(zhǔn)備的應(yīng)用。我們采用一套關(guān)于固化平臺和第三包依賴庫的認知,以至于你可以通過最小的煩惱來啟動。大多數(shù)的應(yīng)用程序只需要非常少的配置。 1 Spring Boot官網(wǎng)[2.1.5 CURRENT GA] 1.1 Pivotal Wiki Pivotal Software, Inc. is a software and services company base...

    ygyooo 評論0 收藏0
  • mobx學(xué)習(xí)總結(jié)

    摘要:原理分析的核心就是通過觀察某一個變量,當(dāng)該變量產(chǎn)生變化時,對應(yīng)的內(nèi)的回調(diào)函數(shù)就會發(fā)生變化。回調(diào)函數(shù)若依賴外部環(huán)境,則無法進行收集很好理解,的回調(diào)函數(shù)在預(yù)執(zhí)行的時候無法到達那一行代碼,所以收集不到。 Mobx解決的問題 傳統(tǒng)React使用的數(shù)據(jù)管理庫為Redux。Redux要解決的問題是統(tǒng)一數(shù)據(jù)流,數(shù)據(jù)流完全可控并可追蹤。要實現(xiàn)該目標(biāo),便需要進行相關(guān)的約束。Redux由此引出了dispa...

    roundstones 評論0 收藏0
  • 【Vue原理】依賴收集 - 源碼版之引用數(shù)據(jù)類型

    摘要:寫文章不容易,點個贊唄兄弟專注源碼分享,文章分為白話版和源碼版,白話版助于理解工作原理,源碼版助于了解內(nèi)部詳情,讓我們一起學(xué)習(xí)吧研究基于版本如果你覺得排版難看,請點擊下面鏈接或者拉到下面關(guān)注公眾號也可以吧原理依賴收集源碼版之引用數(shù)據(jù)類型上 寫文章不容易,點個贊唄兄弟專注 Vue 源碼分享,文章分為白話版和 源碼版,白話版助于理解工作原理,源碼版助于了解內(nèi)部詳情,讓我們一起學(xué)習(xí)吧研究基于...

    vvpvvp 評論0 收藏0
  • 從數(shù)組入手淺析Vue響應(yīng)式原理

    摘要:響應(yīng)式原理為了探究這一切的原因,我再次點開了的官網(wǎng)。在官網(wǎng)很下面的位置,找到了關(guān)于響應(yīng)式原理的說明。因此,新添加到數(shù)組中的對象中的屬性,就成了非響應(yīng)式的屬性了,改變它自然不會讓組件重新渲染。響應(yīng)式屬性的對象,有這個對象就代表是響應(yīng)式的。 ??最近在用Vue開發(fā)一個后臺管理的demo,有一個非常常規(guī)的需求。然而這個常規(guī)的需求中,包含了大量的知識點。有一個產(chǎn)品表格,用來顯示不同產(chǎn)品的信息。...

    dkzwm 評論0 收藏0
  • 從深處去掌握數(shù)據(jù)校驗@Valid的作用(級聯(lián)校驗)

    摘要:如果說要使用數(shù)據(jù)校驗,我十分相信小伙伴們都能夠使用,但估計大都是有個前提的環(huán)境。具體使用可參考小家讓支持對平鋪參數(shù)執(zhí)行數(shù)據(jù)校驗?zāi)J使用只能對進行校驗級聯(lián)校驗什么叫級聯(lián)校驗,其實就是帶校驗的成員里存在級聯(lián)對象時,也要對它完成校驗。 每篇一句 NBA里有兩大笑話:一是科比沒天賦,二是詹姆斯沒技術(shù) 相關(guān)閱讀 【小家Java】深入了解數(shù)據(jù)校驗:Java Bean Validation 2.0(...

    BlackFlagBin 評論0 收藏0

發(fā)表評論

0條評論

IT那活兒

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<