su-its / ams-backend

:briefcase: (This repository is no longer maintained) The backend server of our Access-management-system.
MIT License
0 stars 0 forks source link

同一ユーザが高速で入退室すると壊れる #94

Closed equal-l2 closed 2 years ago

equal-l2 commented 3 years ago

スクリプトなどで同一ユーザが高速で入退室すると、そのユーザが二度と退室できなくなることがある。

具体的には、以下のような状況:

  1. あるユーザが同一時刻に入室&退室し、さらにその時刻内にもう一度入室する
  2. access_logsテーブルはユーザIDと入室時刻で制約をかけているので、このユーザの退室処理ができなくなる。

通常は入退室処理自体に1秒以上かかる(入退室時に音を鳴らす処理がブロッキングなため)ので、実運用上の問題はおそらくない。

h-takeyeah commented 3 years ago

ありがとうございます。解決策としてはユニークなIDを各レコードに振ることでしょうか。

レコードにユニークなIDを振る方法として自分はAUTO INCREMENTしか知らなかったのですが、Maria DBだとSEQUENCEというものも使えるらしくこちらはAUTO INCREMENTに比べて性能面でアドバンテージがあるとかないとか。参考