[過去ログ]
スレ立てるまでもない質問はここで 163匹目 (1002レス)
スレ立てるまでもない質問はここで 163匹目 http://mevius.5ch.net/test/read.cgi/tech/1670470167/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
726: デフォルトの名無しさん (オイコラミネオ MM91-4mn0) [sage] 2023/02/24(金) 11:28:28.20 ID:62b5PWzyM >>724 [案1] ・mkdir "X" 法で排他制御を開始する。他のcgiのインスタンスが処理中は待機する。 ・今までのデータファイルAには上書きせずに、ファイルAをメモリーに全部 読み込んでから、一部だけを修正し、新しいファイルBを作成して全部 書き出してしてしまう。 ・ファイルBをfflushして、OSのsystem call で(?) sync して、ストレージに本当に 書き込まれるまで待つ。 ・それが終わったら、ファイルAを削除してからBのフ
ァイル名をAに変えてしまう。 ・rmdir "X" として、排他制御を終える。 http://mevius.5ch.net/test/read.cgi/tech/1670470167/726
727: デフォルトの名無しさん (ワッチョイ b5da-BTrK) [sage] 2023/02/24(金) 11:30:29.54 ID:/JDec9CR0 > ・それが終わったら、ファイルAを削除してからBのファイル名をAに変えてしまう。 はい、ここでアウト ファイルAを削除した段階でOSがダウンするとデータが無くなる また、複数のファイルに書き込む場合が考慮されていない な? http://mevius.5ch.net/test/read.cgi/tech/1670470167/727
728: デフォルトの名無しさん (オイコラミネオ MM91-4mn0) [sage] 2023/02/24(金) 11:31:14.08 ID:62b5PWzyM >>725 >その程度のアルゴリズムも思いつかないようなレベルじゃ >実装なんて到底無理だ。 726 のようなアルゴリズムはどうですか。 効率は悪いと思いますし、一時的にディスク領域が2倍必要になりますが。 http://mevius.5ch.net/test/read.cgi/tech/1670470167/728
729: デフォルトの名無しさん (ワッチョイ b5da-BTrK) [sage] 2023/02/24(金) 11:32:54.79 ID:/JDec9CR0 信頼性重視なデータベースソフトが どれもジャーナルという仕組み(アルゴリズムではない)を 採用している理由を考えろ その程度の適当な方法じゃ実装できねぇんだよ http://mevius.5ch.net/test/read.cgi/tech/1670470167/729
730: デフォルトの名無しさん (オイコラミネオ MM91-4mn0) [sage] 2023/02/24(金) 11:33:17.21 ID:62b5PWzyM >>727 >ファイルAを削除した段階でOSがダウンするとデータが無くなる 次にcgiを起動した時に、ファイルAが無くなっていて、ファイルBだけが 存在する時には、Bのファイル名をAに改名するところから再開すれば 良いのでは有りませんか。 http://mevius.5ch.net/test/read.cgi/tech/1670470167/730
731: デフォルトの名無しさん (ワッチョイ b5da-BTrK) [sage] 2023/02/24(金) 11:37:53.55 ID:/JDec9CR0 いくつもある穴の一つを指摘しただけだ 複数のファイルに書き込むときはどうする? http://mevius.5ch.net/test/read.cgi/tech/1670470167/731
732: デフォルトの名無しさん (ワッチョイ b5da-BTrK) [sage] 2023/02/24(金) 11:39:24.82 ID:/JDec9CR0 だいたいCGIっていうのが終わってる ファイルサイズが100GBあったら ロック時間は100GBのファイルコピーの時間分になる 多数のアクセスでスケールしない http://mevius.5ch.net/test/read.cgi/tech/1670470167/732
733: デフォルトの名無しさん (オイコラミネオ MM91-4mn0) [sage] 2023/02/24(金) 11:44:39.76 ID:62b5PWzyM >>732 ファイルのサイズは1MB程度までと考えています。 >>731 複数ファイルの場合、mkdir "X" で排他性世を行なっている間に、 同じことを繰り返せばいいと思います。 http://mevius.5ch.net/test/read.cgi/tech/1670470167/733
734: デフォルトの名無しさん (ワッチョイ e310-mLMb) [sage] 2023/02/24(金) 11:44:56.50 ID:2YdGe9kz0 そんなやり方推奨せんけど rename(2)の上書きはアトミックにできるから先に消すのは悪手 http://mevius.5ch.net/test/read.cgi/tech/1670470167/734
735: デフォルトの名無しさん (オイコラミネオ MM91-4mn0) [sage] 2023/02/24(金) 11:45:39.89 ID:62b5PWzyM >>731 >いくつもある穴の一つを指摘しただけだ 単一ファイルの場合で、サイズが十分小さい場合には、他に穴はないのでは ないでしょうか。 http://mevius.5ch.net/test/read.cgi/tech/1670470167/735
736: デフォルトの名無しさん (オイコラミネオ MM91-4mn0) [sage] 2023/02/24(金) 11:47:55.10 ID:62b5PWzyM >>734 renameに関しては、どういう意味か分かりませんが、もし、Aを先に削除したく ないのであれば、 ・AをCに改名後、BをAに改名。 ・sync(?)などで、ストレージに本当に書き込まれるまで待機。 ・Cを削除。 で良いのではないでしょうか。 ただ、余り意味は無いと思われます。 http://mevius.5ch.net/test/read.cgi/tech/1670470167/736
737: デフォルトの名無しさん (ワッチョイ a301-YJ5W) [sage] 2023/02/24(金) 13:37:04.58 ID:igKefKVx0 >>726 解決策を考える前に要件を固めたほうがいいよ 急にcgiや排他制御が出てくるけど 同時実行を含めてどういう粒度でどういう操作をサポートする必要があるのかによって 更新方法も排他制御の方法も考え方が変わってくる flush前のOSダウンに備えるだけなら更新内容が復元できるだけの情報を ジャーナルとして書き出しflush完了を確認してからファイルを更新すればいい 比較的新しめのファイルシステムはそういう機能を持ってる http://me
vius.5ch.net/test/read.cgi/tech/1670470167/737
738: デフォルトの名無しさん (アウアウウー Sa49-ebfy) [sage] 2023/02/24(金) 14:13:55.96 ID:p/kCAwBGa なんでお前ら車輪を発明しようとしてんの? あるぞそれ http://mevius.5ch.net/test/read.cgi/tech/1670470167/738
739: デフォルトの名無しさん (オイコラミネオ MM91-4mn0) [sage] 2023/02/24(金) 14:16:27.90 ID:OSyVRWv/M >>737 >flush前のOSダウンに備えるだけなら更新内容が復元できるだけの情報を >ジャーナルとして書き出しflush完了を確認してからファイルを更新すればいい 「更新内容が復元できるだけの情報」 として、今までのデータファイルAをまるまるcopyしておいてとっておく方法が考えられます。 copyは効率が悪いので、効率を良くしたのがそれが今回提示しました rename 方です。 ファイルAが大きくなった場合サイズが大きくなる難点がありま
すが、 サイズが小さいならば最も単純な方法ではないかと考えております。 逆に、ファイルAが大きい場合、「復元できるだけの情報」を小さくする、ということに過ぎ ないと思われます。 その場合、ファイルAの「部分書き換え」が安全に行なえて、書き換えなかった部分は、 今までのデータがそのまま絶対に安全に残っていることが保証できないといけないと 思われます。 その場合、ファイル単位ではなく「クラスタ単位のアクセス」が必要になるかも知れませんが、 いかが思われますか? http://mevius.5ch.net/test/read.cgi/tech/1670470167/739
740: デフォルトの名無しさん (オイコラミネオ MM91-4mn0) [sage] 2023/02/24(金) 14:51:56.78 ID:iKSzXQzLM それから、mkdir "X" 法で排他制御する場合、rmdir "X" で排他制御を終えるまでに 電源断が起きたとき、次に cgi が起動した場合にどう対処するか問題がありますね。 例えば、10分後に別インスタンスの cgi が起動した時にフォルダ "X" が残っていた 場合、恐らく直前の cgi の実行中にトラブルが発生した可能性が高くなります。 その場合、cgiのプロセスを見つけ出して存在していれば kill してから、 仕切り直すこ
とで対処できるかも知れませんが。 http://mevius.5ch.net/test/read.cgi/tech/1670470167/740
741: デフォルトの名無しさん (オイコラミネオ MM91-4mn0) [sage] 2023/02/24(金) 15:24:56.35 ID:iKSzXQzLM >>738 MySQLもPostgreSQLも仕組みがよく分からないので、電源断が起きたとき どこのどういうファイルがどのような状態になっているかが分からないんです。 それと、テーブル1つに対して3つのファイルが作られると聞きました。 レンタルサーバーでは容量が100GBでも、ファイルの個数が1000個などの上限 が有る場合が多いですし、そもそも、MySQLなどのテーブル数に上限があったり して難しいんです。 >>737 安いレンタルサーバーでは
、Ruby On Railsのような常駐サーバーは使えないので、 cgiしか選択肢が無いと思います。 http://mevius.5ch.net/test/read.cgi/tech/1670470167/741
742: デフォルトの名無しさん (ワッチョイ a301-YJ5W) [sage] 2023/02/24(金) 15:29:30.22 ID:igKefKVx0 >>739 要件を固める前に思いつきであれこれ実装方法を考えても時間の無駄だよ それと排他制御という言葉で思考停止してるから どういう制御が必要なのかもう少し考えたほうがいいよ RDBを知ってるならmkdirでの排他制御だけじゃ穴だらけなわかるよね http://mevius.5ch.net/test/read.cgi/tech/1670470167/742
743: デフォルトの名無しさん (スップ Sd03-O7MM) [] 2023/02/24(金) 16:08:08.86 ID:CdQVBJsid >>741 vpsにすれば? http://mevius.5ch.net/test/read.cgi/tech/1670470167/743
744: デフォルトの名無しさん (ワッチョイ b5da-BTrK) [sage] 2023/02/24(金) 16:40:10.04 ID:/JDec9CR0 >>741 MySQLもPostgreSQLも単純な仕組みでは無理だから 複雑な仕組みでトランザクションを実現してる SQLiteは堅牢なデータベースでファイルの代わりに使える 排他制御も組み込まれてるからmkdirみたいなアホな仕組みを使わなくてすむ http://mevius.5ch.net/test/read.cgi/tech/1670470167/744
745: デフォルトの名無しさん (ワッチョイ b5da-BTrK) [sage] 2023/02/24(金) 16:41:34.41 ID:/JDec9CR0 >>741 > 安いレンタルサーバーでは、 なら安いVPS借りればいいだろ月500年で借りられる 自分の技術力のなさを運営費が高いと嘘をつくのはやめなされ http://mevius.5ch.net/test/read.cgi/tech/1670470167/745
746: デフォルトの名無しさん (オイコラミネオ MM91-4mn0) [sage] 2023/02/24(金) 16:42:16.61 ID:iKSzXQzLM >>744 SQLiteで電源断の時に何が起きるかについての詳細資料は有りませんか。 http://mevius.5ch.net/test/read.cgi/tech/1670470167/746
747: デフォルトの名無しさん (オイコラミネオ MM91-4mn0) [sage] 2023/02/24(金) 16:43:13.01 ID:iKSzXQzLM >>745 年間2000円(月間150円ほど)のサーバーを借りようかと思っていますが。 http://mevius.5ch.net/test/read.cgi/tech/1670470167/747
748: デフォルトの名無しさん (ワッチョイ e310-mLMb) [sage] 2023/02/24(金) 16:54:03.07 ID:2YdGe9kz0 >>746 当然公式にあるとなぜ至らんのか https://sqlite.org/wal.html https://sqlite.org/transactional.html>SQLite http://mevius.5ch.net/test/read.cgi/tech/1670470167/748
749: デフォルトの名無しさん (スップ Sd03-O7MM) [] 2023/02/24(金) 16:59:06.90 ID:CdQVBJsid 能力のない貧乏人が一番始末に負えない http://mevius.5ch.net/test/read.cgi/tech/1670470167/749
750: デフォルトの名無しさん (ワッチョイ cbcf-h1Ka) [sage] 2023/02/24(金) 17:01:28.64 ID:Wz7cqaYJ0 データベースの話じゃなくて耐障害とかバックアップの話に見えるが笑 http://mevius.5ch.net/test/read.cgi/tech/1670470167/750
751: デフォルトの名無しさん (アウアウウー Sa49-ebfy) [sage] 2023/02/24(金) 17:21:36.41 ID:mwMEBPdga >>741 電源断になってもデータが壊れないような仕組みがあるから素直にデータベース使え http://mevius.5ch.net/test/read.cgi/tech/1670470167/751
752: デフォルトの名無しさん (オイコラミネオ MM91-4mn0) [sage] 2023/02/24(金) 17:32:38.14 ID:iKSzXQzLM >>748 電源断になったときにどのような動作になるか分かり易く書かれたところは有りません か。 http://mevius.5ch.net/test/read.cgi/tech/1670470167/752
753: デフォルトの名無しさん (ワンミングク MMa3-IvAx) [sage] 2023/02/24(金) 17:42:03.65 ID:zVLb+oi5M 春休みスゲー 次から次へと馬鹿が出てくる http://mevius.5ch.net/test/read.cgi/tech/1670470167/753
754: デフォルトの名無しさん (ワッチョイ b5da-BTrK) [sage] 2023/02/24(金) 18:03:20.49 ID:/JDec9CR0 >>752 ここに全部書いてある https://sqlite.org/atomiccommit.html あとはお前がそれを作るか SQLiteを使うかだ お前の目的は何?お前が本当に作りたいものだよ。 データベース相当の堅牢性を自作することが目的なのか? http://mevius.5ch.net/test/read.cgi/tech/1670470167/754
755: デフォルトの名無しさん (アウアウウー Sa49-ebfy) [sage] 2023/02/24(金) 18:25:18.04 ID:mwMEBPdga 情弱の考えることはよくわからん 自分の作るものの方が一流のプロが作って詳細なテストをくぐり抜けて広く使われて多くの人の手で検証されてるものより信頼性が高いという謎の自信を持ってるくせに5chをそれより信頼してるんだから http://mevius.5ch.net/test/read.cgi/tech/1670470167/755
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 247 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.013s