最近引っ越した。住所変更の届出とかが面倒なのはどこの国でも一緒だけど、SINとかHealth insurance cardとかはWebページから一括で変更が出来た。
銀行:全部オンラインで住所変更が出来た。
電話:オンラインで住所変更可能
ISP:電話しないとダメだった(Inter.net)
携帯(FIDO):オンラインで住所変更可能
日本で引っ越ししたのは随分前だからどっちがいいとかはあまり言えないけど、こっちでの住所変更は想像していたよりは楽だった。
Posts from 6月 2007
DBでツリー構造
システム開発=Web+DBって言ってもいい位DBは世の中に普及してる。ここでのDBはRDB(リレーショナルデータベース)というヤツで、表形式のデータ(テーブル)を複数持って、必要に応じてキーで表同士を結合するもの。
ま、細かい話は置いとくとして、Excelとかで扱うような住所録、在庫管理表とかそういったデータを格納するのには非常に向いているけど、木構造のデータを扱うのはちょっと簡単ではない。
○方法1
簡単に思いつく方法としては、各ノードを1レコードとして保存し親ノードのIDを親へのリンクとして持たせるやつ。Aの下にBとCという子供がいるとすると
ID | ノード名 | 親のID |
1 | A | NULL |
2 | B | 1 |
3 | C | 1 |
簡単に実装できる反面、ノードの削除が結構面倒だったり、階層が1段階増えるたびにLEFT JOINを1つ増やさなきゃいけない等、色々制約もある。ちにみにAdjacency List Modelというらしい。
○方法2
もう一つの方法はNested Set Modelというらしい。
これらの方法の詳細に関してはここでは書かない。っていうかこのページを見た方が分かりやすいと思うし。原文はこっち。表とかは原文の方がみやすい。
書くこと沢山たまった
普段仕事関係でWebで調べ物したり、何か新しい事を発見した時は、Yahoo!ノートパッドにちょこっとメモしておいて、それに自分の考察等を加えてblogに書くことが多いんだけど、いつぐらいからか忘れたけど今年の秋くらいまでずーっと自宅のWebサイトがダウンしてて(些細な理由だったんだけど)、その間にメモがどんどん溜まっていった。
こないだの一時帰国でWebサイトも復旧したので、またボチボチエントリをアップロードしていこうと思ってるけど、先は長いなぁ。
レンタルサーバーにも移行したいけど、中々面倒。というか、自宅の引っ越しがまず先だし。
MySQLでクラスタ
現在関わっているプロジェクトの規模が大きくなってきたため、MySQLのクラスタについて調べることになった。
調べていくとMySQL Clusterというものの存在に気づいた。なんだ、既にそういう機能があるなら、あとは設定を調べてテスト環境を構築するだけだな、とか思っていたけどどうもそう簡単でもなかった。
今使っているバージョンは5.0.xなんだけど、5.0の場合MySQL Clusterの大きな制約として
データは全てメモリに格納しなければいけない
というのがある。
今のプロジェクトはそれ程大規模なシステムではないけど、それでもレコード数は数百万はあるので、データを全てメモリ上に持たせるのは現実的な選択肢ではない。
Webを色々見てたら、既存のソフトを組み合わせてActive-Passive構成のクラスタを組んでいる人がいた(Webページ)。考えていることが結構似てたので、割と参考になった。
でも、もっと調べてみたらMySQL Cluster5.1からはディスク上にデータを保持できるようなので、βが取れた時点でバージョンアップを検討中。こっちの方がシンプルな解だと思う。とはいえクラスタ一般の知識も当然必要だけど。IT Proに簡単な紹介記事が出ていた。
MySQL Clusterのセットアップに関してはMLで本家ドキュメントの翻訳(?)が投稿されてた。2005年2月の投稿だから、5.0の情報だと思うけど。