在JAVA程式插入資料庫時,時間應該取JVM的時間還是資料庫的時間 這兩個時間可能不一致 可能會造成什麼風險

時間 2021-05-31 07:38:52

1樓:li kyle

這是乙個設計問題,而設計源於需求,首先要搞清楚的是業務需求就是說這個時間是幹什麼用的,脫離這個談從哪兒取時間就沒有實際意義了比如你要記錄業務發生的時間

(才發現草稿箱裡3年前的草稿,完成並提交吧)這個如何能用資料庫時間呢?如果考慮到國際化不同時區,直接用JVM時間也是不行的

但是如果你的時間的作用是非功能性的審計時間,就是要記錄資料插入資料庫的時間,不用資料庫的時間用什麼?

2樓:趙北雲

這個問題其實應該寫成"要不要依賴資料庫提供的函式來獲取環境資訊"

SQL中盡量不要依賴任何SQL函式會使日誌喪失冪等性還原的時候就撲街了

3樓:

不是分布式的話(實際上這個地方指的是對時間不敏感, 比如web server的時間和db的時間有5min的時間誤差):

全部轉化為UTC時間, DB的時間也轉化為UTC時間插入進去分布式的話:

參考分布式資料庫中為什麼要使用 Vector Clock? - 分布式儲存

風險, 如果真的是對時間非常敏感的專案, 根本不會問這種問題, 所以既然題主你問了這樣的問題, 我推測基本上沒啥大問題, 除了扯皮的時候比較麻煩, 最後還是UTC一了百了

向資料庫插入資料時,時間欄位的值,是在程式中新增還是依賴資料庫的函式,由資料庫去管理時間??

首先要看你的時間字段用於什麼場景。如果你要用來對賬或者做某時間段的冪等的話,也就是具有功能性業務性的,推薦還是由程式決定。因為程式本身會產生時間,和你儲存好的這種時間進行對比,必須統一由程式決定。如果與功能無關推薦資料庫來管理。這樣的話不僅能讓資料在落地的時候統一標準,還可以依賴資料庫的特性來方便的...

無限的向資料庫插入資料會怎麼樣?

知來吹 既然說是面試,我就告訴你我會怎麼瞎扯的。不一定錯也不一定是對的。首先資料庫肯定可以被無限插入,這個是沒次數限制的。唯一限制的是他的資料庫大小和硬體的條件。資料庫有大小的情況下,資料都是計算大小的。肯定就無法繼續在插入到資料庫了。所以這個問題解決了。對不 有毛病嗎?下次就這樣懟回去,明顯是看你...

Java開發三年沒用過oracle資料庫正常嗎?

首先得有會oracle的人,而且企業還得養得起這個人.很貴的.否則資料庫出問題怎麼辦.資料庫,可不僅僅是增刪改查.我學了用了oracle十年以上,都還有很多邊邊角角,因為沒用到而沒去學.小企業,還是因人而定,會mysql,就用mysql. 渦輪增壓 正常,現在開發的很多專案都沒有必要去用 Oracl...