ボタン電池がなくなり、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
- https://stackoverflow.com/questions/42097779/how-can-mongodb-handle-objectid-timestamp-beyond-tue-19-jan-2038
- https://jira.mongodb.org/browse/GODRIVER-1092
- https://www.wdic.org/w/TECH/2106%E5%B9%B4%E5%95%8F%E9%A1%8C
- https://www.mongodb.com/blog/post/generating-globally-unique-identifiers-for-use-with-mongodb