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

質問編集履歴

7

URLにリンクをつけました。

2016/09/03 07:51

投稿

hojo
hojo

スコア195

title CHANGED
File without changes
body CHANGED
@@ -2,9 +2,9 @@
2
2
 
3
3
  以下のようなサイトでも言われているように、CRUDのUとDを利用せずデータをログのように扱う方法は関連するデータ(特に履歴)が失われないために好感が持てました。
4
4
 
5
- http://tanakakoichi9230.hatenablog.com/entry/6715376804
5
+ [http://tanakakoichi9230.hatenablog.com/entry/6715376804](http://tanakakoichi9230.hatenablog.com/entry/6715376804)
6
- http://qiita.com/Jxck_/items/156d0a231c6968f2a474
6
+ [http://qiita.com/Jxck_/items/156d0a231c6968f2a474](http://qiita.com/Jxck_/items/156d0a231c6968f2a474)
7
- http://mike-neck.hatenadiary.com/entry/2015/03/24/231422
7
+ [http://mike-neck.hatenadiary.com/entry/2015/03/24/231422](http://mike-neck.hatenadiary.com/entry/2015/03/24/231422)
8
8
 
9
9
  現在MySQLを利用してウェブサービスを作成しようと考えているのですが、実際にUとDを利用しないDB設計をするにはどうすれば良いのかというところでつまづいてしまいました。
10
10
 

6

MySQLタグを削除

2016/09/03 07:51

投稿

hojo
hojo

スコア195

title CHANGED
File without changes
body CHANGED
File without changes

5

タグを追加

2016/09/03 07:50

投稿

hojo
hojo

スコア195

title CHANGED
File without changes
body CHANGED
File without changes

4

不要な変数名を省略

2016/09/03 06:50

投稿

hojo
hojo

スコア195

title CHANGED
File without changes
body CHANGED
@@ -31,7 +31,7 @@
31
31
  アクションログ用テーブル(action_id, target_db, target_column, value, created)を作成し全てのデータ操作をログとして残し、ログデータが追加された場合にトリガーを利用して最新データ参照用テーブルをupdateする。(valueの型をどうするべきかは不明。おそらくTEXT型)
32
32
 
33
33
 
34
- アクションログはRDBではなくログデータとしてディスクに書き込み、RDBは通常通りCRUDする。また、アクションログを書き込むプログラムをモジュール化し、```dataModule.set(user_id, name, value);```などの関数を利用してデータを書き込む際には自動的にログファイルとRDBの両方が書き換えられるようにする。(そのモジュールにログファイルからDBを作成できる機能などあると良いかも)
34
+ アクションログはRDBではなくログデータとしてディスクに書き込み、RDBは通常通りCRUDする。また、アクションログを書き込むプログラムをモジュール化し、```dataModule.set(id, name, value);```などの関数を利用してデータを書き込む際には自動的にログファイルとRDBの両方が書き換えられるようにする。(そのモジュールにログファイルからDBを作成できる機能などあると良いかも)
35
35
 
36
36
  ①は無駄に容量を食うのであまり良くないと思っています。②に関しては「NULLは使うな」と良く言われてるのでそれがひっかかります。あとデータを取得する際に複雑なクエリを発行することになりそうです。③はNULL利用が不安なことは変わりありませんが、データ書き込みと取得で異なるテーブルを使うので複雑クエリ問題は解消しそうです。④この方法が良いんじゃないかと個人的に思っていたのですが、value型をどうするかという問題が残っています。またtext型を利用した場合、大量のログがtext型でinsertされることを考えると少し不安になります(全く問題ないのかもしれませんが)⑤については最終的にこれが一番良いのではないか?と思って現在検討している方法になります。しかしこれだと今までずっと"CRUD is Dead"の考え方できたのに、結局CRUDでDB操作しちゃってますね(汗。しかしログファイルを取ることで、何かあった時にはログファイルからDBを復元したり、調査が必要になった時にログファイルを確認したりできるのでCRUDのUとDは使ってますけどUとDを使わなかった時のメリットは得ることができているといった感じでしょうか。
37
37
 

3

わかりにくい文言を修正

2016/09/03 03:27

投稿

hojo
hojo

スコア195

title CHANGED
File without changes
body CHANGED
@@ -33,7 +33,7 @@
33
33
 
34
34
  アクションログはRDBではなくログデータとしてディスクに書き込み、RDBは通常通りCRUDする。また、アクションログを書き込むプログラムをモジュール化し、```dataModule.set(user_id, name, value);```などの関数を利用してデータを書き込む際には自動的にログファイルとRDBの両方が書き換えられるようにする。(そのモジュールにログファイルからDBを作成できる機能などあると良いかも)
35
35
 
36
- ①は無駄に容量を食うのであまり良くないと思っています。②に関しては「NULLは使うな」と良く言われてるのでそれがひっかかります。あとデータを取得する際に複雑なクエリを発行することになりそうです。③はNULL利用が不安なことは変わりありませんが、データ書き込みと取得で異なるテーブルを使うので複雑クエリ問題は解消しそうです。④この方法が良いんじゃないかと個人的に思っていたのですが、value型をどうするかという問題が残っています。text型を利用し大量のログがinsertされることを考えると不安になります)⑤については最終的にこれが一番良いのではないか?と思って現在検討している方法になります。しかしこれだと今までずっと"CRUD is Dead"の考え方できたのに、結局CRUDでDB操作しちゃってますね(汗。しかしログファイルを取ることで、何かあった時にはログファイルからDBを復元したり、調査が必要になった時にログファイルを確認したりできるのでCRUDのUとDは使ってますけどUとDを使わなかった時のメリットは得ることができているといった感じでしょうか。
36
+ ①は無駄に容量を食うのであまり良くないと思っています。②に関しては「NULLは使うな」と良く言われてるのでそれがひっかかります。あとデータを取得する際に複雑なクエリを発行することになりそうです。③はNULL利用が不安なことは変わりありませんが、データ書き込みと取得で異なるテーブルを使うので複雑クエリ問題は解消しそうです。④この方法が良いんじゃないかと個人的に思っていたのですが、value型をどうするかという問題が残っています。またtext型を利用した場合、大量のログがtext型でinsertされることを考えると少し不安になります(全く問題ないのかもしれませんが)⑤については最終的にこれが一番良いのではないか?と思って現在検討している方法になります。しかしこれだと今までずっと"CRUD is Dead"の考え方できたのに、結局CRUDでDB操作しちゃってますね(汗。しかしログファイルを取ることで、何かあった時にはログファイルからDBを復元したり、調査が必要になった時にログファイルを確認したりできるのでCRUDのUとDは使ってますけどUとDを使わなかった時のメリットは得ることができているといった感じでしょうか。
37
37
 
38
38
  このように幾つかの方法を考えたのですが、そもそも一般的なベストプラクティスがあるのではないか?と思いましたので是非そういった参考にできるサイトや、俺だったらこうするという意見がございましたら教えていただきたいと思っています。
39
39
 

2

読みにくい文言を修正

2016/09/03 03:27

投稿

hojo
hojo

スコア195

title CHANGED
File without changes
body CHANGED
@@ -31,9 +31,9 @@
31
31
  アクションログ用テーブル(action_id, target_db, target_column, value, created)を作成し全てのデータ操作をログとして残し、ログデータが追加された場合にトリガーを利用して最新データ参照用テーブルをupdateする。(valueの型をどうするべきかは不明。おそらくTEXT型)
32
32
 
33
33
 
34
- アクションログはログデータとしてRDBではなくディスクに書き込み、RDBは通常通りCRUDを利用する。また、アクションログを書き込むプログラムをモジュール化し、```dataModule.set(user_id, name, value);```などの関数を利用してデータを書き込む際には自動的にログファイルとRDBの書き換えが行われるようにする。(またそのモジュールにログファイルからDBを作成できる機能などあっても良いかも)
34
+ アクションログはRDBではなくログデータとしてディスクに書き込み、RDBは通常通りCRUDする。また、アクションログを書き込むプログラムをモジュール化し、```dataModule.set(user_id, name, value);```などの関数を利用してデータを書き込む際には自動的にログファイルとRDBの両方が書き換えれるようにする。(そのモジュールにログファイルからDBを作成できる機能などあると良いかも)
35
35
 
36
- ①は無駄に容量を食うのであまり良くないと思っています。②に関しては「NULLは使うな」と良く言われてるのでそれがひっかかります。あとデータを取得する際に複雑なクエリを発行することになりそうです。③はNULL利用が不安なことは変わりありませんが、データ書き込みと取得で異なるテーブルを使うので複雑クエリ問題は解消しそうです。④この方法が良いんじゃないかと個人的に思っていたのですが、value型をどうするかという問題が残っています。(text型を利用して大量のログがinsertされることを考えると不安になります)⑤については最終的にこれが一番良いのではないか?と思って現在検討している方法になります。④のアクションログテーブルをDBで扱わずにログファイルで扱うようにたという感じですね。しかしこれだと今までずっと"CRUD is Dead"の考え方できたのに、結局CRUDでDB操作しちゃってます。しかしログファイルを取ることで、何かあった時にはログファイルからDBを復元したり、調査が必要になった時にログファイルを確認したりできるといった感じでしょうか。
36
+ ①は無駄に容量を食うのであまり良くないと思っています。②に関しては「NULLは使うな」と良く言われてるのでそれがひっかかります。あとデータを取得する際に複雑なクエリを発行することになりそうです。③はNULL利用が不安なことは変わりありませんが、データ書き込みと取得で異なるテーブルを使うので複雑クエリ問題は解消しそうです。④この方法が良いんじゃないかと個人的に思っていたのですが、value型をどうするかという問題が残っています。(text型を利用して大量のログがinsertされることを考えると不安になります)⑤については最終的にこれが一番良いのではないか?と思って現在検討している方法になります。しかしこれだと今までずっと"CRUD is Dead"の考え方できたのに、結局CRUDでDB操作しちゃってますね(汗。しかしログファイルを取ることで、何かあった時にはログファイルからDBを復元したり、調査が必要になった時にログファイルを確認したりできるのでCRUDのUDは使ってますけどUとDを使わなかった時のメリットは得ることができてるといった感じでしょうか。
37
37
 
38
38
  このように幾つかの方法を考えたのですが、そもそも一般的なベストプラクティスがあるのではないか?と思いましたので是非そういった参考にできるサイトや、俺だったらこうするという意見がございましたら教えていただきたいと思っています。
39
39
 

1

誤字の修正

2016/09/03 03:25

投稿

hojo
hojo

スコア195

title CHANGED
File without changes
body CHANGED
@@ -1,6 +1,6 @@
1
1
  "CRUD is Dead"なんて言われてる方もいらっしゃるようでCRUDのUとDを禁止する流れが存在するようです。
2
2
 
3
- 以下のようなサイトでも言われているように、CRADのUとDを利用せずデータをログのように扱う方法は関連するデータ(特に履歴)が失われないために好感が持てました。
3
+ 以下のようなサイトでも言われているように、CRUDのUとDを利用せずデータをログのように扱う方法は関連するデータ(特に履歴)が失われないために好感が持てました。
4
4
 
5
5
  http://tanakakoichi9230.hatenablog.com/entry/6715376804
6
6
  http://qiita.com/Jxck_/items/156d0a231c6968f2a474