Webアプリの複数ユーザーから参照されるオブジェクトを管理するための仕組み

1: 以下、\(^o^)/でVIPがお送りします 2015/09/21(月) 19:15:41.315 ID:7ASYLEH90.net
Webアプリケーションで複数のユーザから参照されるオブジェクトがある場合に
それらを管理するための仕組みはどうするものなの
フレームワークってありそうだけど

2: 以下、\(^o^)/でVIPがお送りします 2015/09/21(月) 19:16:55.528 ID:NBJyzFHYa.net
sqlならロックかければ

 

4: 以下、\(^o^)/でVIPがお送りします 2015/09/21(月) 19:17:36.958 ID:7ASYLEH90.net
>>2
アプリケーション層での共有を想定している

 

3: 以下、\(^o^)/でVIPがお送りします 2015/09/21(月) 19:17:08.612 ID:7ASYLEH90.net
例えばオンライン販売サイトで商品オブジェクトはすべてのユーザで共有するとか

 

5: 以下、\(^o^)/でVIPがお送りします 2015/09/21(月) 19:26:43.323 ID:7ASYLEH90.net
よくありそうな使い方だと思うんだけど

 

スポンサーリンク

6: 以下、\(^o^)/でVIPがお送りします 2015/09/21(月) 19:35:39.271 ID:2uQqf8qd0.net
サーブレットやらアパッチやらは不揮発なデータ持てないし
ファイルに自分で書くならDBでいいし

 

8: 以下、\(^o^)/でVIPがお送りします 2015/09/21(月) 19:37:11.990 ID:7ASYLEH90.net
>>6
毎回DBアクセスするのは非効率だから
DBから読み込んだオブジェクトを共有するってイメージ

 

7: 以下、\(^o^)/でVIPがお送りします 2015/09/21(月) 19:35:57.478 ID:7ASYLEH90.net
予想外に高度な使い方なのか?
普通にフレームワークがあるのかと思ってた

 

9: 以下、\(^o^)/でVIPがお送りします 2015/09/21(月) 19:39:37.074 ID:2uQqf8qd0.net
キャッシュサーバーとかmemcachedとかあるじゃん

 

10: 以下、\(^o^)/でVIPがお送りします 2015/09/21(月) 19:42:32.296 ID:7ASYLEH90.net

>>9
キャッシュサーバーはページをキャッシュするサーバのこと指してる?

memcachedは初めて聞いた
データベースの前に置かれるイメージなの?
オブジェクトもキャッシュできるんだろうか?

 

12: 以下、\(^o^)/でVIPがお送りします 2015/09/21(月) 19:48:55.388 ID:9PyWtMI00.net
static変数に入れておくという方法も

 

14: 以下、\(^o^)/でVIPがお送りします 2015/09/21(月) 19:51:21.090 ID:7ASYLEH90.net
>>12
全体で500MBを超えたら古いオブジェクトは破棄するみたいな管理もしたい

 

18: 以下、\(^o^)/でVIPがお送りします 2015/09/21(月) 19:55:13.006 ID:oaACLH+kK.net
>>14
もちろんデータサイズのスレッショルドやらでガベージコレクタ走らせるような実装もある

 

20: 以下、\(^o^)/でVIPがお送りします 2015/09/21(月) 19:57:13.280 ID:7ASYLEH90.net
>>18
その実装ってフレームワークみたいな形でオープンソース化されてるものはない?

 

24: 以下、\(^o^)/でVIPがお送りします 2015/09/21(月) 19:59:24.987 ID:oaACLH+kK.net
>>20
俺は仕事でJBosscacheくらいしか触ってないが
探せばわりと色々あるはず

 

26: 以下、\(^o^)/でVIPがお送りします 2015/09/21(月) 20:01:24.644 ID:7ASYLEH90.net
>>24
アプリケーションサーバの機能あるいはアドオンとして提供されるのかな?
Tomcatでもあるか探してみる

 

29: 以下、\(^o^)/でVIPがお送りします 2015/09/21(月) 20:04:04.739 ID:oaACLH+kK.net
>>26
tomcatはサーブレットコンテナ単体だから無いと思うの
TomEEならあるんじゃね?
JavaEEのフレームワークになら大体乗ってる

 

31: 以下、\(^o^)/でVIPがお送りします 2015/09/21(月) 20:08:44.585 ID:7ASYLEH90.net

>>24
JBosscacheの場合だとどんな感じで使うんだろ?

オブジェクトを生成したら
キャッシュに登録する
次使うときはキャッシュを参照して
なければもう一度生成する

って感じ?

 

34: 以下、\(^o^)/でVIPがお送りします 2015/09/21(月) 20:16:09.193 ID:oaACLH+kK.net

>>31
基本アプリからはキャッシュとDBは別物として扱う
例えばセッションタイムアウトするまでセッション情報を複数のwebサーバーまたはコンテナで共有するとかな
DBに置きに行くときはキャッシュの処理とは別にJDBC呼ぶ
そんな感じ
KVSであれMAPであれ扱い方は変わらん

>>1が求めているものはO/Rマッパーのほうが近いんじゃないかな

 

37: 以下、\(^o^)/でVIPがお送りします 2015/09/21(月) 20:19:45.173 ID:7ASYLEH90.net

>>34
キャッシュに置く処理とキャッシュを参照する処理は
明示的にコーディングする必要があるの?
それともフレームワークが透過的にやってくれるんだろうか?

DBアクセスの部分は理解してるから問題ない

 

38: 以下、\(^o^)/でVIPがお送りします 2015/09/21(月) 20:25:01.496 ID:oaACLH+kK.net

>>37
基本は明示的にやる
DBキャッシュっていう観点では透過的な実装もある

Java キャッシュ hibernate

とかでぐぐれば色々わかるんじゃないかな

 

39: 以下、\(^o^)/でVIPがお送りします 2015/09/21(月) 20:28:21.311 ID:7ASYLEH90.net

>>38
なるほど
明示的に管理する必要があるのか

透過的にできるフレームワークがあるかと思ってたけどそこまでは進んでいないのか…
現在の状況についてなんとなく掴めた
ありがとう

 

40: 以下、\(^o^)/でVIPがお送りします 2015/09/21(月) 20:30:31.743 ID:oaACLH+kK.net
>>39
進んでるとか進んでないとかはとりあえず置いといて
君の要求に対してはHibernateが一番マッチしてると思う

 

41: 以下、\(^o^)/でVIPがお送りします 2015/09/21(月) 20:36:14.853 ID:7ASYLEH90.net

>>40
最初の頃の俺の質問の仕方が悪かったせいでそう受け取られちゃったんだろうけど
Hibernateはピンと来ないなあ

オブジェクトをうまく共有すればDBアクセスは最小限にできるだろうから
そうすればDBのキャッシュとかあまり効果がないような
Hibernateが活躍できないのがいいデザインだと思う

まあ机上で考えているだけだから実際はそうも行かないのかもしれんが

 

42: 以下、\(^o^)/でVIPがお送りします 2015/09/21(月) 20:45:48.729 ID:oaACLH+kK.net
>>41
そう考えるのであればstaticで持たせておいて
複数サーバー間で共有する必要があるならリモートEJBコールするとかでもいい
キャッシュ要らない

 

43: 以下、\(^o^)/でVIPがお送りします 2015/09/21(月) 20:50:20.481 ID:7ASYLEH90.net

>>42
staticで持たせる場合、キャッシュのように管理する方法が分からない
メモリには当然上限があるから例えば500MBを超えたら古いオブジェクトは
破棄したいとかある
オブジェクトの登録、参照をなるべく透過的にしたいし

そのあたりのフレームワークはあるんだろうか?

 

13: 以下、\(^o^)/でVIPがお送りします 2015/09/21(月) 19:49:32.276 ID:7ASYLEH90.net
memcachedのページ見に行ったらPerlでの利用がメインの使いかたなんだろうか
memcachedでヒットしなかった場合にDBを見に行く処理はどこに書くものなの?

 

17: 以下、\(^o^)/でVIPがお送りします 2015/09/21(月) 19:55:04.258 ID:2uQqf8qd0.net

>>12
staticは消えるしメモリの負荷が心配だし水平分割できないしそれならmemcachedでいい

>>13
memcachedはKVSな非リレーショナルなDBってだけだしperlに限らず好きに使えば良い
オブジェクトは直列化しろ

 

28: 以下、\(^o^)/でVIPがお送りします 2015/09/21(月) 20:03:39.798 ID:7ASYLEH90.net

>>17
なるほど
Javaからもmemcachedにアクセスできるのか

フレームワーク的なものが見つからなかったら試してみる
ありがとう

 

15: 以下、\(^o^)/でVIPがお送りします 2015/09/21(月) 19:52:27.038 ID:oaACLH+kK.net
mapreduce型のキャッシュとかO/Rマッパーとかあるし既に色んなフレームワークに組み込まれているが
話がざっくりしてて何を疑問に感じているのかよくわからん

 

16: 以下、\(^o^)/でVIPがお送りします 2015/09/21(月) 19:54:53.986 ID:7ASYLEH90.net

>>15
ここのコードでだいたい分かった
https://code.google.com/p/memcached/wiki/TutorialCachingStory

memcachedをチェック
なければDBにアクセス
データをmemcachedに登録

って処理を自分で書くって事か

もうちょっと高いレベルで管理できるフレームワークがあるといいな
あとJava対応してて欲しい

 

19: 以下、\(^o^)/でVIPがお送りします 2015/09/21(月) 19:56:37.487 ID:V2KE7mME0.net
最近読んだ本に負荷軽減ならそういう時はサーバ増やしてロードバランサ導入するって書いてあったけど
それじゃだめなん?

 

23: 以下、\(^o^)/でVIPがお送りします 2015/09/21(月) 19:58:51.554 ID:7ASYLEH90.net
>>19
サーバの並列化と併用することはあるだろうけど
アプリケーションとして何らかの機能を提供するのが望ましいと思う

 

22: 以下、\(^o^)/でVIPがお送りします 2015/09/21(月) 19:58:48.312 ID:NBJyzFHYa.net
多分Mutexだな

 

25: 以下、\(^o^)/でVIPがお送りします 2015/09/21(月) 19:59:41.369 ID:7ASYLEH90.net
>>22
Mutexはスレッドのアクセスを制御するもんだろ?

スポンサーリンク

27: 以下、\(^o^)/でVIPがお送りします 2015/09/21(月) 20:01:50.565 ID:oaACLH+kK.net
ミューテクスとかセマフォはIPCの話
まぁ自分でキャッシュサーバの実装作るなら知ってる必要はあるが

 

30: 以下、\(^o^)/でVIPがお送りします 2015/09/21(月) 20:04:41.107 ID:7ASYLEH90.net
>>27
そうだよな
そういう名前のパッケージでもあるのかと思ってぐぐったけど見当たらなかった

 

32: 以下、\(^o^)/でVIPがお送りします 2015/09/21(月) 20:09:25.968 ID:oaACLH+kK.net
つーかJavaのフレームワークでキャッシュ持たせようとすると必然的にJavaEEになるから敷居高いと思うよ
memcachedとかを汎用的に使うほうが理解は早い

 

33: 以下、\(^o^)/でVIPがお送りします 2015/09/21(月) 20:11:31.484 ID:7ASYLEH90.net
>>32
J2EEだとどうなるんだろ?
サーブレット、JSPは分かってる

 

36: 以下、\(^o^)/でVIPがお送りします 2015/09/21(月) 20:18:28.259 ID:oaACLH+kK.net
>>33
J2EEって今は使わない単語なんやで
JavaEE=J2EEな

 

35: 以下、\(^o^)/でVIPがお送りします 2015/09/21(月) 20:16:31.451 ID:7ASYLEH90.net
Javaのフレームワークでキャッシュ持たせる場合の概略を教えてほしい

 

44: 以下、\(^o^)/でVIPがお送りします 2015/09/21(月) 20:53:16.942 ID:dTT+cZwp0.net
>>1
それを目指して壮大なプロジェクトを敷いて大コケしたのがORB
概念だけでやめときゃよかったものを

引用元:http://viper.2ch.sc/test/read.cgi/news4vip/1442830541/

関連記事

53874076d99cd0de764cadd23c5706e3_s

C言語の深淵を見たら勉強する気が失せた

1: 以下、\(^o^)/でVIPがお送りします 2015/05/31(日) 18:51:29.3

記事を読む

https---www.pakutaso.com-assets_c-2014-05-PAK86_codeing20140517500-thumb-1000xauto-4601

C言語初めて1週間の俺が書いた100行のコードを見てほしい

1: 以下、\(^o^)/でVIPがお送りします 2015/05/10(日) 10:08:27.9

記事を読む

150130-php7

PHP7に初のアルファ版登場

1: 番組の途中ですがアフィサイトへの\(^o^)/です 2015/07/02(木) 20:10:

記事を読む

https---www.pakutaso.com-assets_c-2015-06-PAK85_rakugaki20141223105016-thumb-1000xauto-18177

「回避率95%だけど被ダメージ2倍になるスキル」と「被ダメージが1に抑えられるけど回避率5%になるスキル」だったら

1: 以下、\(^o^)/でVIPがお送りします 2015/06/14(日) 11:57:58.1

記事を読む

https---www.pakutaso.com-assets_c-2015-05-N866_sikamettura-thumb-1000xauto-14778

来年から情報系の専門行くからプログラミングの勉強をしておきたいんだが、初心者でもC言語覚えられるかな?

1: 以下、\(^o^)/でVIPがお送りします 2015/09/24(木) 10:43:41.7

記事を読む

スクリーンショット 2014-06-07 4.26.54

【IT】松江発、プログラミング言語「Ruby」普及を目指しサイト開設

1: キャプテンシステムρφ ★@転載は禁止 2014/06/05(木) 11:16:49.15

記事を読む

https---www.pakutaso.com-assets_c-2015-06-GREEN_O20140125-thumb-1000xauto-16629

お世辞抜きでRuby・Python・PHPのなかではRubyが一番よく出来てね?

1: zaq771925b4.zaq.ne.jp@\(^o^)/ 2015/03/15(日) 22

記事を読む

https---www.pakutaso.com-assets_c-2014-09-AL202syazai520140830164224500-thumb-1000xauto-5395

専門学生だけどITパスポート難しすぎぃー!!

1: 以下、\(^o^)/でVIPがお送りします 2015/05/14(木) 16:28:13.2

記事を読む

9021068066664569333

GitHubで世界で人気のプログラミング言語を発表 一番人気は皆が大好きなあの言語

1: バズソーキック(宮城県)@\(^o^)/ 2015/08/22(土) 19:54:42.2

記事を読む

bsYUKA150701598457

オブジェクト指向について詳しい人に聞きたいんだけど、「デザインパターン」ってなんなん?

1: 以下、\(^o^)/でVIPがお送りします 2015/10/18(日) 16:22:09.4

記事を読む

Huawei-Mate-8-benchmark-post-launch_1
Androidのベンチマーク、10万点を突破 インフレが止まらない

1: 番組の途中ですがアフィサイトへの\(^o^)/です (ニククエ

hGJvbfh
せっかくの休みだ。原付で>>5に行く。

1: 名無しさん@おーぷん 2015/11/29(日)06:13:2

9xHNnte
XperiaZ5からdocomoのロゴだけ消せるシートが発売開始

1: 番組の途中ですがアフィサイトへの\(^o^)/です (アウアウ

bsLISA78_MBAsawaru20141018102912
子供にプログラミング教えることになりそうなんだが、どうやって教えたら良いんだ?

1: 以下、\(^o^)/でVIPがお送りします 2015/11/2

top
国内で最大容量の8THDDが2万円台に値下がり

1: 海江田三郎 ★ 2015/11/29(日) 14:43:35.

→もっと見る

PAGE TOP ↑