teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

typo

2017/02/13 03:16

投稿

yuba
yuba

スコア5570

title CHANGED
File without changes
body CHANGED
@@ -7,7 +7,7 @@
7
7
  DB側で現在時刻を取得する形にすると
8
8
 
9
9
  - ○ アプリサーバを多重化したときに、アプリサーバ間の時計のズレに関係なく一貫した時刻が取得でき、前後関係の矛盾が起こりません。
10
- - ○ アプリのプログラミングから時刻という要素を排除してシンプルなロジックにできます。ロジックに現在日が必要な局面、たとえば「先週のなにか集計」を取得するときでも、DB問い合わせの結果の一部として「週というのは○月○日からの7日間のことなんだけど」という数字も取れてくるような形にして局所的に押さえ込めます。
10
+ - ○ アプリのプログラミングから時刻という要素を排除してシンプルなロジックにできます。ロジックに現在日が必要な局面、たとえば「先週のなにか集計」を取得するときでも、DB問い合わせの結果の一部として「週というのは○月○日からの7日間のことなんだけど」という数字も取れてくるような形にして局所的に押さえ込めます。
11
11
  - △ アプリ側の動作ログとDBのデータを付き合わせようとしたときに、タイムスタンプに時刻のズレがあって突き合わせが難しくなる可能性があります。対策はいろいろ考えられるものの。
12
12
  - × DBの問い合わせはアプリコードよりも単体テストが困難なので、時刻に絡んだ振る舞いのテストが不十分になりがち。アプリだったら、引数として時刻、もしくは時刻を吐くラムダ式を与える形にするなどでいくらでもテストしやすいコードにできます。
13
13
  - × 2番めにあげたメリットと表裏一体ですが、時刻を利用したきめの細かい処理はアプリ側で記述できなくなります。もしくは、自分の書き込んだデータを再度問い合わせてタイムスタンプを見るなどという冗長な処理をせざるを得なくなりえます。