[過去ログ] 【node.js】サーバサイドjavascript 4【io.js】 [無断転載禁止]©2ch.net (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
785
(1): 2017/09/08(金)00:57 ID:vWsWUiiy(5/8) AAS
IndexedDB特有の話ならtransaction使わないと
readonlyなのかreadwriteなのか決められないからだろ
786
(1): 2017/09/08(金)01:14 ID:mcCYyLIS(1/3) AAS
>>779
DBへの接続(open)とトランザクションは別のレイヤーだからだよ
1つの接続で2つのトランザクションを実行したい場合どうすんの?

transactionを明示的に指定しない場合に
デフォルト設定で例えばステートメント単位でトランザクションになるような仕組みがDBにあればtransaction指定は必須でなくなる
一般的なRDBはそうなってると思うけど
787
(4): 2017/09/08(金)01:20 ID:pIgMfxSJ(2/6) AAS
>>784-785
つかお前根本的に分かってないだろ。

IndexedDBはonupgradeneededの時は最初からトランザクションを張っている。
これはMDNからはとてもそうは読めないのだが、とにかくそう。

そしてAPIが
> DBWrite(DBname, objectStores, key, value)
> DBWrite
とかでいいのではないか?というのが俺の疑問なのだが。

何故かは知らんがDBには「繋ぎっぱなし」の文化はあるんだよ。>>772
IndexedDBのAPIからもそれは読みとれる。
省8
788
(1): 2017/09/08(金)01:26 ID:pIgMfxSJ(3/6) AAS
>>786
> transactionを明示的に指定しない場合に(以下略)
これについてはそれでいい。
APIコール1回=1つのtransactionになるって事で。

> 1つの接続で2つのトランザクションを実行したい場合どうすんの?
これってどういうケース?
その2つのトランザクションをくっつけて1つのトランザクションにしておけばいいだけの話では?
並列性を限界まで出したくて、例えばライト/リードでトランザクションを分けておきたいとかか?
789
(1): 2017/09/08(金)03:16 ID:mcCYyLIS(2/3) AAS
>>788
1回の接続で複数トランザクションを実行したいケースってあんまりないのかな
例えば2つのトランザクションのうち後者が失敗しても前者をロールバックしたくない時とか考えてみたら?

トランザクションのたびに再接続するので良いケースもありうるけどそうじゃないケースもありうるよね
だから一般的にはトランザクション境界と接続の開閉を一つにしたAPIってのはいい設計じゃないと思う

>>787
繋ぎっぱなしの文化なんかなくて、ただの開放漏れのバグだよ
openしたらcloseするのが必須
790
(2): 2017/09/08(金)08:36 ID:Q9xrmP/+(1/2) AAS
>>780
コネクションプーリングはコネクションを使いまわす仕組みだからDBには繋がったままだけどWebのセッションからはリクエストの度に切り離される。
とっくに終わってるセッションがコネクションを独占するようなアホな作りはどうやったらできるのかって事。
791
(1): 2017/09/08(金)08:40 ID:Q9xrmP/+(2/2) AAS
>>787
繋っぱなしってコネクションプーリングのことでしょ。アプリから見ると毎回、open/closeしてるように見える。
792
(1): 2017/09/08(金)09:36 ID:vWsWUiiy(6/8) AAS
>>790
コネクションを独占ってなんだ?
異なるセッションから、コネクションを使いまわすのがコネクションプーリングなんだが?
セッションが終わってるっていうのなら、コネクションは明け渡してるだろ
793: 2017/09/08(金)09:38 ID:vWsWUiiy(7/8) AAS
>>787
> IndexedDBはonupgradeneededの時は最初からトランザクションを張っている。

じゃあなおのこと、openでトランザクションは貼れないな。
だって、何の操作をするかで、トランザクションの種類が変わるわけで
openした時点ではわからないんだから
794: 2017/09/08(金)09:40 ID:vWsWUiiy(8/8) AAS
>>787
> そしてAPIが
> > DBWrite(DBname, objectStores, key, value)
> > DBWrite
> とかでいいのではないか?というのが俺の疑問なのだが。

トランザクションは複数のDBWriteを
一つにまとめるものなんだから
それじゃだめだろって言ってるんだが?

いいからトランザクションを勉強してくれ
お前、根本的に分かってない(笑)
795: 2017/09/08(金)11:27 ID:K/Y+ost0(1) AAS
>>792
>>766-767
796
(1): 2017/09/08(金)19:22 ID:pIgMfxSJ(4/6) AAS
>>789
ただのバグでMDISが糞だというのは同意だが、APIは糞だぞ。

> 例えば2つのトランザクションのうち後者が失敗しても前者をロールバックしたくない時とか考えてみたら?
これなら2つトランザクションを打てばいいだけ。それで何の問題もない。

> トランザクションのたびに再接続するので良いケースもありうるけどそうじゃないケースもありうるよね
ねえよ。具体的に挙げられないだろ。

open/closeがAPIにある場合の利点は、連続した同一DBに対する2つのトランザクションで、
・open/transaction1/close/open/transaction2/close

・open/transaction1/transaction2/close
省16
797
(1): 2017/09/08(金)19:23 ID:pIgMfxSJ(5/6) AAS
DBのAPIは意味不明で、そもそもオブジェクト指向にも反してる。
ユーザがやりたいのはread/writeであって、open/closeではない。
File.openの代わりにHDD.open+File.readというAPIにする奴がいたら、死ねでしかないだろ。

open/closeってもしかして今みたいなパケット相乗り回線ではなく、専用回線を掴んでいた時の名残か?
798
(3): 2017/09/08(金)19:24 ID:pIgMfxSJ(6/6) AAS
>>790
MDISのケースは多分、図書館内端末用の界面にそのままWebを接続しただけだろ。
この場合、見た目は問題なく動く。
リソース枯渇のケースはコードから落とすしかないが、レビューが新規コードだけなら無理だ。
(この場合は新規コードはほぼ無しで、問題は今動作しているコード内にあるから)
おそらくMDISもB方式で、自前でコネクションプーリングしてる。
これは館内端末用で、端末に行列が出来ているかどうかは知る由もないから、closeはタイムアウトで10分とした。
ここまでは妥当な設計で、館内端末なんて高々数十台だし、問題なく動く。

問題はこれをそのままWeb側にも解放したことで、
この場合は一気に端末数が無限大になるのと等価で、コネクションが枯渇した。それだけだろ。
省10
799: 2017/09/08(金)23:49 ID:mcCYyLIS(3/3) AAS
>>796
もうめんどくさいな君w
DBへの接続とトランザクション境界を一致させた画期的APIを作って流行らせればいいよ?
一つのユースケースたけに特化したものとしては別にあっても悪く無いと思うよ
ただなぜそういう設計のものが存在しないのか考えてからね
800: 2017/09/09(土)01:02 ID:al+wrNfN(1/10) AAS
>>797
> ユーザがやりたいのはread/writeであって、open/closeではない。

そのうち二回のwriteを実行して二回目のwriteで
エラーが起きた時に一回目のwriteもロールバックするために
トランザクションがあるんですよ?
801: 2017/09/09(土)01:12 ID:al+wrNfN(2/10) AAS
外部リンク:developer.mozilla.org

データベースからデータを取得する

よーし、今から customers テーブルのデータを読み込むぞー!

var transaction = db.transaction(["customers"]);

おい、ちょっとまて俺はdbオープンした時に
自動的にトランザクション実行するぞ!
全てのテーブルに対してreadwriteロックじゃ
誰も読み込みも書き込みもできない
俺はcutomersテーブルなんか触らないけどなwww
省1
802
(1): 2017/09/09(土)01:14 ID:al+wrNfN(3/10) AAS
>>798
open/closeのパフォーマンスを気にしてるのはお前だけだ
忘れろな
803: 2017/09/09(土)01:16 ID:al+wrNfN(4/10) AAS
>>798
> 問題はこれをそのままWeb側にも解放したことで、
> この場合は一気に端末数が無限大になるのと等価で、コネクションが枯渇した。それだけだろ。

誰もコネクションが枯渇したなんて言ってない
804: 2017/09/09(土)01:26 ID:al+wrNfN(5/10) AAS
>>798
当たり前すぎることだが、MDISのシステムは
「1時間に400以上リクエストを送られると他のリクエストの処理が不可能になる不具合を含んでいた」
と言ってるだけで、

ウェブのクライアントが直接DBに接続したなんて誰も言ってない。
そもそもそんなことはできない

ブラウザからデータベースに接続することなんてできない。
IndexedDBはお前、それブラウザん中に実装されてるもんだ。そこを勘違してたわけかw
MDISのシステムはIndexedDBを用意してなんかいない。時代的に使ってすらいないだろう

本当に当たり前のことだが、
省10
1-
あと 198 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.020s