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]