2008.05.10
プログラムのお勉強 その9 何もしないと壊れる
コンピューターは難しいから、余分な事はしない方がいい・・・と考える人は意外と多いのですが、何もしなくても壊れる事があります。
日々データを累積する仕組みの場合は、いずれパンクして動かなくなってしまうのです。
動かなくなってから対応を考えていたのでは、システム屋としては失格です。
(某銀行のように、動かなくなって・・・世間を騒がせて・・・という事になります。)
プログラムを作る場合には、必ずデータ量を考えるようにしましょう。
どのくらいのデータ量まで大丈夫なのか?
それを越えてしまったら、どうすればいいのか?
こういう観点でプログラムを作る事が大切になります。
お気楽オークションの掲示板の場合は、この部分を凄くシンプルに作っています。
古いデータを自動的に消すか・・・
全く何もやらないか・・・この2種類です。
全く何もやらない方は、数年に1回のタイミングで内容を全部初期化する事を前提に作成しています。
1年以上前の記事は全て削除・・というメンテが前提なのです。
古いデータを自動的に消す方は、記事が一定件数を越えると、古い方から消えていきます。
利用頻度の低いデータや、何十ページも前に行ってしまって検索される可能性が下がったデータを大事に保存しておいても、リスクだけが増えてトラブルの元になるという考え方です。
このように、データを累積するタイプのプログラムの場合、累積する事よりも累積したデータを効率よく捨てるという考えの方が大切になるのです。
でんでん
↓↓↓ブログランキングに参加しています。クリック1票お願いします

↓↓↓こちらも宜しくお願いします

プログラムのお勉強 その8 処理速度
日々データを累積する仕組みの場合は、いずれパンクして動かなくなってしまうのです。
動かなくなってから対応を考えていたのでは、システム屋としては失格です。
(某銀行のように、動かなくなって・・・世間を騒がせて・・・という事になります。)
プログラムを作る場合には、必ずデータ量を考えるようにしましょう。
どのくらいのデータ量まで大丈夫なのか?
それを越えてしまったら、どうすればいいのか?
こういう観点でプログラムを作る事が大切になります。
お気楽オークションの掲示板の場合は、この部分を凄くシンプルに作っています。
古いデータを自動的に消すか・・・
全く何もやらないか・・・この2種類です。
全く何もやらない方は、数年に1回のタイミングで内容を全部初期化する事を前提に作成しています。
1年以上前の記事は全て削除・・というメンテが前提なのです。
古いデータを自動的に消す方は、記事が一定件数を越えると、古い方から消えていきます。
利用頻度の低いデータや、何十ページも前に行ってしまって検索される可能性が下がったデータを大事に保存しておいても、リスクだけが増えてトラブルの元になるという考え方です。
このように、データを累積するタイプのプログラムの場合、累積する事よりも累積したデータを効率よく捨てるという考えの方が大切になるのです。
でんでん
↓↓↓ブログランキングに参加しています。クリック1票お願いします

↓↓↓こちらも宜しくお願いします

プログラムのお勉強 その8 処理速度
2008.05.03
プログラムのお勉強 その8 処理速度
コンピュータのハード構成によって処理速度が変るって知ってますか?
実はコンピュータのハード構成には、法則のような物があるのです。
CPUに近い機械は、動きが速いのです。
CPUの中に入っているメモリーが一番実行速度が速く、CPUの基盤の近くに刺さっているメモリーがその次くらい・・・。
CPUのボードから直接ケーブルで繋がっている機械も、そこそこ速いけど・・・
LANを通して、他の場所に設置すると遅くなります。
その為、処理速度が必要な場合は、プログラムの書き方を工夫すると速くなるんです。
データを読み書きしないで、メモリー上だけで動かせばいいのです。
Windows Vistaが、メモリーを大量に使うのも、処理速度を上げる為にメモリーを使うのも、これらの工夫がされているからなのです。
良く使うプログラムは、ディスクから読まずにメモリーに常駐させたり・・・ディスクを使わずにメモリーだけで動かすなんて方法もあります。
プログラムを作る上でも、この法則を理解して作ると処理速度が速くなるのです。
同じデータを毎回読み込むような処理をしないで、極力覚えている内容で処理をするようにすればいいのです。
データを1件づつ読みながら、チェックデータと比較する処理の場合、チェックデータをメモリーに蓄えてから処理すると、1000倍以上も早くなる事があるのです。
でんでん
↓↓↓ブログランキングに参加しています。クリック1票お願いします

↓↓↓こちらも宜しくお願いします

プログラムのお勉強 その7 対障害性
実はコンピュータのハード構成には、法則のような物があるのです。
CPUに近い機械は、動きが速いのです。
CPUの中に入っているメモリーが一番実行速度が速く、CPUの基盤の近くに刺さっているメモリーがその次くらい・・・。
CPUのボードから直接ケーブルで繋がっている機械も、そこそこ速いけど・・・
LANを通して、他の場所に設置すると遅くなります。
その為、処理速度が必要な場合は、プログラムの書き方を工夫すると速くなるんです。
データを読み書きしないで、メモリー上だけで動かせばいいのです。
Windows Vistaが、メモリーを大量に使うのも、処理速度を上げる為にメモリーを使うのも、これらの工夫がされているからなのです。
良く使うプログラムは、ディスクから読まずにメモリーに常駐させたり・・・ディスクを使わずにメモリーだけで動かすなんて方法もあります。
プログラムを作る上でも、この法則を理解して作ると処理速度が速くなるのです。
同じデータを毎回読み込むような処理をしないで、極力覚えている内容で処理をするようにすればいいのです。
データを1件づつ読みながら、チェックデータと比較する処理の場合、チェックデータをメモリーに蓄えてから処理すると、1000倍以上も早くなる事があるのです。
でんでん
↓↓↓ブログランキングに参加しています。クリック1票お願いします

↓↓↓こちらも宜しくお願いします

プログラムのお勉強 その7 対障害性
2008.04.19
プログラムのお勉強 その7 対障害性
プログラムを作る上で、大半の人が考慮していない事が、対障害性です。
コンピュータが壊れてしまったら、データは全て消えてしまうかも知れません。
定期的にバックアップを取得するなんて方法もありますが、一般のレンタルサーバーにはそこまでのサービスが限界です。
障害発生時には、前日のデータに戻ってしまうのです。
コンピュータのデータを二重化する仕事をしていた時に考えた事があります。
銀行から大量に借金して、そのデータが消えてしまったら・・・借金した人の勝ちかな?って。
壊れ難いデータ構造にすると、庶民の夢が消えてしまうので・・・自分の仕事は、庶民の夢を打ち砕いているのでは無いかと・・・。
(ちなみに、金持っている人のデータが消える事は、考えてませんでした。)
実際に銀行の中では、壊れ難い機械を使ったり、データを多重で記録する事で、データが壊れないような仕組みにしてあります。
これと同じような考え方をプログラムの中に組み込むと、対障害性の高いプログラムが作れます。
データのバックアップの頻度を上げる為に、ファイルを小さく設計し、更新のあった分だけバックアップすればいいようにするとか・・・。
更新した部分だけを一つのファイルに追記書き込みして、これを元に修復できるようにする・・・。
こういうファイル設計にしておけば、ファイルが壊れた時でも慌てなくてすむはずです。
常に更新が入るようなサイト設計の場合は、考えてみて下さい。
でんでん
↓↓↓ブログランキングに参加しています。クリック1票お願いします

↓↓↓こちらも宜しくお願いします

プログラムのお勉強 その6 ファイル設計
コンピュータが壊れてしまったら、データは全て消えてしまうかも知れません。
定期的にバックアップを取得するなんて方法もありますが、一般のレンタルサーバーにはそこまでのサービスが限界です。
障害発生時には、前日のデータに戻ってしまうのです。
コンピュータのデータを二重化する仕事をしていた時に考えた事があります。
銀行から大量に借金して、そのデータが消えてしまったら・・・借金した人の勝ちかな?って。
壊れ難いデータ構造にすると、庶民の夢が消えてしまうので・・・自分の仕事は、庶民の夢を打ち砕いているのでは無いかと・・・。
(ちなみに、金持っている人のデータが消える事は、考えてませんでした。)
実際に銀行の中では、壊れ難い機械を使ったり、データを多重で記録する事で、データが壊れないような仕組みにしてあります。
これと同じような考え方をプログラムの中に組み込むと、対障害性の高いプログラムが作れます。
データのバックアップの頻度を上げる為に、ファイルを小さく設計し、更新のあった分だけバックアップすればいいようにするとか・・・。
更新した部分だけを一つのファイルに追記書き込みして、これを元に修復できるようにする・・・。
こういうファイル設計にしておけば、ファイルが壊れた時でも慌てなくてすむはずです。
常に更新が入るようなサイト設計の場合は、考えてみて下さい。
でんでん
↓↓↓ブログランキングに参加しています。クリック1票お願いします

↓↓↓こちらも宜しくお願いします

プログラムのお勉強 その6 ファイル設計
2008.04.12
プログラムのお勉強 その6 ファイル設計
プログラムを作れるようになると、今あるデータを加工して何か作ってみようとする人が多いのですが、ファイルの設計は大丈夫ですか?
同じファイルを使う処理が増えると、ファイルの取り合いが発生する事もあります。
これを回避するには、データはできるだけ細かく分割する事が大切です。
分割するポイントは、画面に表示する単位ではありませんよ。
データを更新する単位が少なくなるように考えて下さい。
画面を表示する時は、大半が読み込み処理なので、巨大なファイルを読んでも表示が遅くなるだけで、しっかり表示できます。
私が作った日本地図コンテンツのデータなんて、裏側に800KBのデータが隠れていますが、それでもしっかり動いています。
データ量が多くても読み込みだけなら、問題点は発生し難くなるのです。
逆に、オークション本体のデータがこのサイズだったら、1秒に1人がアクセスしたら動かなくなります。
では、どうしても大きくなってしまうファイルはどうすればいいのか?
例えばオークションのユーザ一覧が入っているデータは、当初1000人で300KBでした。
これでは、2000人登録したら、動きが悪くなってしまいます。
そこで、自己紹介を別のファイルにして、3割のサイズを削減に成功しました。
登録人数が2000人突破したら、さらに分割して個人情報部分を切り離し
さらに増えたら、先頭文字で分割かな?
この方法使えば、1万人でも大丈夫なはずです。
また、出品物の一覧も1つのファイルに全部入っているので、常時出品数が3桁になったら、出品物別に独立させようと思います。
オークションのCGIは、元のファイル設計がユーザ3桁,総出品数4桁だったのです。
でんでん
↓↓↓ブログランキングに参加しています。クリック1票お願いします

↓↓↓こちらも宜しくお願いします

プログラムのお勉強 その5 ファイルロックの落とし穴
同じファイルを使う処理が増えると、ファイルの取り合いが発生する事もあります。
これを回避するには、データはできるだけ細かく分割する事が大切です。
分割するポイントは、画面に表示する単位ではありませんよ。
データを更新する単位が少なくなるように考えて下さい。
画面を表示する時は、大半が読み込み処理なので、巨大なファイルを読んでも表示が遅くなるだけで、しっかり表示できます。
私が作った日本地図コンテンツのデータなんて、裏側に800KBのデータが隠れていますが、それでもしっかり動いています。
データ量が多くても読み込みだけなら、問題点は発生し難くなるのです。
逆に、オークション本体のデータがこのサイズだったら、1秒に1人がアクセスしたら動かなくなります。
では、どうしても大きくなってしまうファイルはどうすればいいのか?
例えばオークションのユーザ一覧が入っているデータは、当初1000人で300KBでした。
これでは、2000人登録したら、動きが悪くなってしまいます。
そこで、自己紹介を別のファイルにして、3割のサイズを削減に成功しました。
登録人数が2000人突破したら、さらに分割して個人情報部分を切り離し
さらに増えたら、先頭文字で分割かな?
この方法使えば、1万人でも大丈夫なはずです。
また、出品物の一覧も1つのファイルに全部入っているので、常時出品数が3桁になったら、出品物別に独立させようと思います。
オークションのCGIは、元のファイル設計がユーザ3桁,総出品数4桁だったのです。
でんでん
↓↓↓ブログランキングに参加しています。クリック1票お願いします

↓↓↓こちらも宜しくお願いします

プログラムのお勉強 その5 ファイルロックの落とし穴
2008.04.05
プログラムのお勉強 その5 ファイルロックの落とし穴
当サイトで使っているCGIの中に、ファイルロックの考え方が根本的に間違えている物がありました。
何千というファイルを1個のキーワードでロックしていたのです。
それも、読み込み処理まで全部同じ処理だったんです。
オークションの本体でこの事象が発生したら、終了時間間際に複数の人が競ったら・・・全機能が麻痺する事になります。
また、この処理の中に、さらに致命的なバグがありました。
一人でも処理を待ってしまうと、永久にファイルがロックされたままになるのです。
発生させる方法は簡単!!
ある画面を再表示する処理を、連打すると・・・機能が麻痺します。
それも・・・1秒に10回連打できれば、ほぼ100%の発生率です。
流石に・・・このバグを見つけた時には、その人が作ったCGIを全部再作成したくなりました。
ファイルのロックというのは、その意味を考えましょう。
また、ロックしたままにならないような仕組みも考えましょう。
Web系のプログラムは、無人の状態で24時間稼動するのです。
常時監視するような設計になっていたら、論外です。
でんでん
↓↓↓ブログランキングに参加しています。クリック1票お願いします

↓↓↓こちらも宜しくお願いします

プログラムのお勉強 その4 サーバーの考慮
何千というファイルを1個のキーワードでロックしていたのです。
それも、読み込み処理まで全部同じ処理だったんです。
オークションの本体でこの事象が発生したら、終了時間間際に複数の人が競ったら・・・全機能が麻痺する事になります。
また、この処理の中に、さらに致命的なバグがありました。
一人でも処理を待ってしまうと、永久にファイルがロックされたままになるのです。
発生させる方法は簡単!!
ある画面を再表示する処理を、連打すると・・・機能が麻痺します。
それも・・・1秒に10回連打できれば、ほぼ100%の発生率です。
流石に・・・このバグを見つけた時には、その人が作ったCGIを全部再作成したくなりました。
ファイルのロックというのは、その意味を考えましょう。
また、ロックしたままにならないような仕組みも考えましょう。
Web系のプログラムは、無人の状態で24時間稼動するのです。
常時監視するような設計になっていたら、論外です。
でんでん
↓↓↓ブログランキングに参加しています。クリック1票お願いします

↓↓↓こちらも宜しくお願いします

プログラムのお勉強 その4 サーバーの考慮

