MongoDB と 2106 年問題

ボタン電池がなくなり、RTC が遥か未来になったときに MongoDB が動作しなくなりました。(正確には、Python アプリにおいて、MongoDB の初期化を行う際にエラーとなりました。)

MongoDB のバージョンは 6.0.5 です。

調べてみると、MongoDB の ObjectID は先頭の4バイトがタイムスタンプ(UNIX タイム)となっているそうです。
MongoDB はこれを符号なし整数として扱っていて、その場合の上限は 4,294,967,295 であり、これは UTC で2106年2月7日6時28分16秒となります。
というわけで、MongoDB はいわゆる 2106 年問題を孕んでいることになります。

ちなみに、4バイトがタイムスタンプを符号付き整数として扱っている場合は 2038 年問題となります。

参考 URL

Hugo で構築されています。
テーマ StackJimmy によって設計されています。