查看完整版本 : Integrity 有幾重要?

kormer 2022-10-10 09:02

數據庫的Data Integrity有幾重要呢?點防止出現問題好?rollback可以嗎?有無嘢無得rollback?

謝謝。:loveliness:

kormer 2022-10-10 23:17

點做到zero tolerance呢?

lhcdims 2022-10-27 10:21

正常都係用 commitment control,你用左有問題?

kormer 2022-10-27 18:45

[quote]原帖由 [i]lhcdims[/i] 於 2022-10-27 10:21 發表 [url=https://www.discuss.com.hk/redirect.php?goto=findpost&pid=553233795&ptid=30806244][img]https://www.discuss.com.hk/images/common/back.gif[/img][/url]
正常都係用 commitment control,你用左有問題? [/quote]
就係有嘢無integrity所以要用。

lhcdims 2022-10-27 20:49

[quote]原帖由 [i]kormer[/i] 於 2022-10-27 18:45 發表 [url=https://www.discuss.com.hk/redirect.php?goto=findpost&pid=553246595&ptid=30806244][img]https://www.discuss.com.hk/images/common/back.gif[/img][/url]

就係有嘢無integrity所以要用。 [/quote]
用左唔會有問題,除非程式 logic 錯

kormer 2022-10-28 18:20

[quote]原帖由 [i]lhcdims[/i] 於 2022-10-27 20:49 發表 [url=https://www.discuss.com.hk/redirect.php?goto=findpost&pid=553249362&ptid=30806244][img]https://www.discuss.com.hk/images/common/back.gif[/img][/url]

用左唔會有問題,除非程式 logic 錯 [/quote]
即係永遠都可以rollback到?

lhcdims 2022-10-28 18:42

[quote]原帖由 [i]kormer[/i] 於 2022-10-28 18:20 發表 [url=https://www.discuss.com.hk/redirect.php?goto=findpost&pid=553273454&ptid=30806244][img]https://www.discuss.com.hk/images/common/back.gif[/img][/url]

即係永遠都可以rollback到? [/quote]
未 commit 前都可以

kormer 2022-10-28 19:51

[quote]原帖由 [i]lhcdims[/i] 於 2022-10-28 18:42 發表 [url=https://www.discuss.com.hk/redirect.php?goto=findpost&pid=553274094&ptid=30806244][img]https://www.discuss.com.hk/images/common/back.gif[/img][/url]

未 commit 前都可以 [/quote]
如果commit後,靠睇log然後人手rollback呢?有無人會咁做?

lhcdims 2022-10-28 20:06

[quote]原帖由 [i]kormer[/i] 於 2022-10-28 19:51 發表 [url=https://www.discuss.com.hk/redirect.php?goto=findpost&pid=553275610&ptid=30806244][img]https://www.discuss.com.hk/images/common/back.gif[/img][/url]

如果commit後,靠睇log然後人手rollback呢?有無人會咁做? [/quote]
唔會咁做,咁樣係 rollback 唔到架!

kormer 2022-10-28 20:06

[quote]原帖由 [i]lhcdims[/i] 於 2022-10-28 20:06 發表 [url=https://www.discuss.com.hk/redirect.php?goto=findpost&pid=553275850&ptid=30806244][img]https://www.discuss.com.hk/images/common/back.gif[/img][/url]

唔會咁做,咁樣係 rollback 唔到架! [/quote]
真係?

lhcdims 2022-10-28 20:09

[quote]原帖由 [i]kormer[/i] 於 2022-10-28 19:51 發表 [url=https://www.discuss.com.hk/redirect.php?goto=findpost&pid=553275610&ptid=30806244][img]https://www.discuss.com.hk/images/common/back.gif[/img][/url]

如果commit後,靠睇log然後人手rollback呢?有無人會咁做? [/quote]
我舉例:

1. add record 1

2. update record 1

3. delete record 1

做完 3 點樣 rollback 2 呢?😂

所以唔可以 commit 後睇 log 再 rollback,因為可能已經做左好多其他 operation

kormer 2022-10-28 20:41

[quote]原帖由 [i]lhcdims[/i] 於 2022-10-28 20:09 發表 [url=https://www.discuss.com.hk/redirect.php?goto=findpost&pid=553275909&ptid=30806244][img]https://www.discuss.com.hk/images/common/back.gif[/img][/url]

我舉例:

1. add record 1

2. update record 1

3. delete record 1

做完 3 點樣 rollback 2 呢?😂

所以唔可以 commit 後睇 log 再 rollback,因為可能已經做左好多其他 operation [/quote]
都未必嘅,其他operations已經有詳細記錄(log)啦,可以一併還原呢...

lhcdims 2022-10-28 21:22

[quote]原帖由 [i]kormer[/i] 於 2022-10-28 20:41 發表 [url=https://www.discuss.com.hk/redirect.php?goto=findpost&pid=553276637&ptid=30806244][img]https://www.discuss.com.hk/images/common/back.gif[/img][/url]

都未必嘅,其他operations已經有詳細記錄(log)啦,可以一併還原呢... [/quote]
咁就大鍋!唔會咁做!應該用其他方法代替!

kormer 2022-10-28 21:24

[quote]原帖由 [i]lhcdims[/i] 於 2022-10-28 21:22 發表 [url=https://www.discuss.com.hk/redirect.php?goto=findpost&pid=553277506&ptid=30806244][img]https://www.discuss.com.hk/images/common/back.gif[/img][/url]

咁就大鍋!唔會咁做!應該用其他方法代替! [/quote]
真係?呢個還原程序都會有記錄。

lhcdims 2022-10-28 21:32

[quote]原帖由 [i]kormer[/i] 於 2022-10-28 21:24 發表 [url=https://www.discuss.com.hk/redirect.php?goto=findpost&pid=553277532&ptid=30806244][img]https://www.discuss.com.hk/images/common/back.gif[/img][/url]

真係?呢個還原程序都會有記錄。 [/quote]
我舉例,某table 記錄賬戶餘額:

day 1: +100餘額 100

day 2: -30 餘額 70

day 3: +50 餘額 120

day 32(月結後),發現 day 2 應該係 -20,唔係 減30

做法1 (你的 rollback 方法):rollback day 2 & 3,重新寫入 day 2 -20 及 day 3 +50

做法 2(正常做法),不 rollback,day 32 加入 兩隻 transaction record,分別係 +30 及 -20,如果牽涉銀行賬戶需要重新計算利息,加入第 3 隻 record +/- 利息

做法 2 先係正確做法,因為 day 3 至 day 32 之間,可能已經有其他幾百萬隻 record,唔可能 rollback 重新做一次架!

kormer 2022-10-28 21:48

[quote]原帖由 [i]lhcdims[/i] 於 2022-10-28 21:32 發表 [url=https://www.discuss.com.hk/redirect.php?goto=findpost&pid=553277721&ptid=30806244][img]https://www.discuss.com.hk/images/common/back.gif[/img][/url]

我舉例,某table 記錄賬戶餘額:

day 1: +100餘額 100

day 2: -30 餘額 70

day 3: +50 餘額 120

day 32(月結後),發現 day 2 應該係 -20,唔係 減30

做法1 (你的 rollback 方法):rollback day 2 & 3,重新寫入 day 2 -20 及 day 3 +50

做法 2(正常做法),不 rollb ... [/quote]
呢個例子都幾好,但唔係好算係在backend修改,應有現成功能完成修正?

lhcdims 2022-10-28 22:02

[quote]原帖由 [i]kormer[/i] 於 2022-10-28 21:48 發表 [url=https://www.discuss.com.hk/redirect.php?goto=findpost&pid=553278139&ptid=30806244][img]https://www.discuss.com.hk/images/common/back.gif[/img][/url]

呢個例子都幾好,但唔係好算係在backend修改,應有現成功能完成修正? [/quote]
呢個功能當然係 frontend 做,並且程式第一日用的時候,就應該有呢個功能!如果冇,咁個 frontend developer 應該係新仔!😂

kormer 2022-10-28 22:09

[quote]原帖由 [i]lhcdims[/i] 於 2022-10-28 22:02 發表 [url=https://www.discuss.com.hk/redirect.php?goto=findpost&pid=553278469&ptid=30806244][img]https://www.discuss.com.hk/images/common/back.gif[/img][/url]

呢個功能當然係 frontend 做,並且程式第一日用的時候,就應該有呢個功能!如果冇,咁個 frontend developer 應該係新仔!😂 [/quote]
都未必㗎,例如在整個commit完成前server突然斷電,就可能要睇log修復紀錄了。

lhcdims 2022-10-28 23:28

[quote]原帖由 [i]kormer[/i] 於 2022-10-28 22:09 發表 [url=https://www.discuss.com.hk/redirect.php?goto=findpost&pid=553278634&ptid=30806244][img]https://www.discuss.com.hk/images/common/back.gif[/img][/url]

都未必㗎,例如在整個commit完成前server突然斷電,就可能要睇log修復紀錄了。 [/quote]
commit 完成前 server 斷電,你咩都唔需要修復!因為 database 會當 begin transaction 後的動作完全沒有做過一樣!

點解你會覺得斷電資料會儲存一半?:smile_41:如果係咁,commitment control 就係廢架啦!😂

kormer 2022-10-29 07:15

[quote]原帖由 [i]lhcdims[/i] 於 2022-10-28 23:28 發表 [url=https://www.discuss.com.hk/redirect.php?goto=findpost&pid=553281231&ptid=30806244][img]https://www.discuss.com.hk/images/common/back.gif[/img][/url]

commit 完成前 server 斷電,你咩都唔需要修復!因為 database 會當 begin transaction 後的動作完全沒有做過一樣!

點解你會覺得斷電資料會儲存一半?:smile_41:如果係咁,commitment control 就係廢架啦!😂 [/quote]
都未必啦,你試過晒所有scenario?

kormer 2022-10-29 07:20

[quote]原帖由 [i]kormer[/i] 於 2022-10-29 07:15 發表 [url=https://www.discuss.com.hk/redirect.php?goto=findpost&pid=553285239&ptid=30806244][img]https://www.discuss.com.hk/images/common/back.gif[/img][/url]

都未必啦,你試過晒所有scenario? [/quote]
仲有一問題,commit之後,db要花幾多時間去update harddisk drive呢?若operations愈多,應該會愈耐,中途斷電會點?

lhcdims 2022-10-29 08:04

[quote]原帖由 [i]kormer[/i] 於 2022-10-29 07:20 發表 [url=https://www.discuss.com.hk/redirect.php?goto=findpost&pid=553285301&ptid=30806244][img]https://www.discuss.com.hk/images/common/back.gif[/img][/url]

仲有一問題,commit之後,db要花幾多時間去update harddisk drive呢?若operations愈多,應該會愈耐,中途斷電會點? [/quote]
假設你自己搞個 mysql 出黎(例如 整個 yoursql 😂),由你負責寫 commitment control功能,你會用咩方法,令到就算 harddisk update 中途斷電,都唔會 update 一半呢?

諗到方法,你就會明白,commitment control 在所有 scenario,都唔會出現問題架!

提示:假設整個 transaction 要 update 10萬隻 record(隻 harddisk 需要 1 分鐘時間update),如果已經 update 左 5萬隻的時候斷電(例如第30秒斷電),有咩辦法仲可以保持住 database 的 integrity 呢?

試下呢一刻開始計時,睇下你幾多秒內諗到解決辦法!:lol

kormer 2022-10-29 10:37

[quote]原帖由 [i]lhcdims[/i] 於 2022-10-29 08:04 發表 [url=https://www.discuss.com.hk/redirect.php?goto=findpost&pid=553285760&ptid=30806244][img]https://www.discuss.com.hk/images/common/back.gif[/img][/url]

假設你自己搞個 mysql 出黎(例如 整個 yoursql 😂),由你負責寫 commitment control功能,你會用咩方法,令到就算 harddisk update 中途斷電,都唔會 update 一半呢?

諗到方法,你就會明白,commitment control 在所有 scenario,都唔會出現問題架!

提示:假設整個 transaction 要 update 10萬隻  ... [/quote]
應該唔使點諗啦,你試晒未先?:loveliness:

lhcdims 2022-10-29 12:35

[quote]原帖由 [i]kormer[/i] 於 2022-10-29 10:37 發表 [url=https://www.discuss.com.hk/redirect.php?goto=findpost&pid=553288221&ptid=30806244][img]https://www.discuss.com.hk/images/common/back.gif[/img][/url]

應該唔使點諗啦,你試晒未先?:loveliness: [/quote]
如果冇 idea,其實你唔適合呢行:L

kormer 2022-10-29 13:09

[quote]原帖由 [i]lhcdims[/i] 於 2022-10-29 12:35 發表 [url=https://www.discuss.com.hk/redirect.php?goto=findpost&pid=553290517&ptid=30806244][img]https://www.discuss.com.hk/images/common/back.gif[/img][/url]

如果冇 idea,其實你唔適合呢行:L [/quote]
睇吓你有無idea嘛 :smile_13:

lhcdims 2022-10-29 15:27

[quote]原帖由 [i]kormer[/i] 於 2022-10-29 13:09 發表 [url=https://www.discuss.com.hk/redirect.php?goto=findpost&pid=553291317&ptid=30806244][img]https://www.discuss.com.hk/images/common/back.gif[/img][/url]

睇吓你有無idea嘛 :smile_13: [/quote]
幾秒鐘就可以想到的 algorithm,你覺得有需要去驗證所有可能性嗎?😂

誇張D講句,要電腦計算 1+1=2,你覺得需要全世界電腦驗證一次?

不如你自己試下先,睇下有咩辦法,可以斷電都唔會出錯!如果冇心機用腦,咁就真系唔好做呢行啦!

kormer 2022-10-29 17:10

[quote]原帖由 [i]lhcdims[/i] 於 2022-10-29 15:27 發表 [url=https://www.discuss.com.hk/redirect.php?goto=findpost&pid=553294595&ptid=30806244][img]https://www.discuss.com.hk/images/common/back.gif[/img][/url]

幾秒鐘就可以想到的 algorithm,你覺得有需要去驗證所有可能性嗎?😂

誇張D講句,要電腦計算 1+1=2,你覺得需要全世界電腦驗證一次?

不如你自己試下先,睇下有咩辦法,可以斷電都唔會出錯!如果冇心機用腦,咁就真系唔好做呢行啦! [/quote]
好多東西牽涉在內呀,短短幾句都講唔完啦,有時算法都未必cover到所有scenario啦。姐係咁,若果你話可以cover到的話,就真係要試過先可以肯定話work。斷電嚟講,db範疇呢,最嚴重可以令數據庫corrupt,點可以避免呢? 我應該都唔使點諗住,因為係DBA負責諗嘛。但係呢,其中一個方案呢,mysql的話呢,可以用remote replication幫手再加logical backup啦。

kormer 2022-11-4 13:32

題外話,integrity在法律上有什麼重要性?

kormer 2022-11-4 14:26

原來ICAC都好著重integrity呢...

[url]https://youtu.be/nmFZmU9HHWY[/url]
頁: [1]
查看完整版本: Integrity 有幾重要?