アーカイブ

2009 年 5 月 のアーカイブ

ACID、BASE、CAP定理

2009 年 5 月 27 日 tdtsh Comments off

CAP定理

システムのCAP (分散耐性と可用性と一貫性) のうち、同時には2つまでしか満たすことはできない、という (Prof. Eric Brewer (UC Berkeley)の) 主張。

  • Consistency (一貫性(整合性))
  • Availability (可用性)
  • Partition Tolerance(分散耐性)

※ITにおけるConsistencyの略は整合性の方が一般的の様だけど、個人的には一貫性の方が意味を良く表していて良い思います。

 


BASEトランザクション

CAP定理に対して、「Eventual Consistency(結果的な一貫性(整合性)) を満たせば、Availability(可用性)とPartition Tolerance(分散耐性)も満たせるよ」という新たな主張とそれを踏まえたトランザクションのACID属性を見直していこうという概念の基本。

個人的には「DNS」や「Active Directory」をイメージすれば理解が早まりました。

  • Basically Available (楽観ロックやキューなどで可用性を高めましょう)
  • Soft-State (分散したノード間のデータ同期を終つことを許容しましょう)
  • Eventual Consistency (一時的に一貫性(整合性)が崩れても最後に帳尻があえば善としましょう (結果一貫性/結果整合性))

 


従来のACID -> 新しいACID

GoogleのGregor Hohpe氏は、クラウドにおいてACIDは次のような意味になると言った

  • Atomic(原子性) -> Associative(結合の)
  • Consistent(一貫性(整合性)) -> Commutative(相互の)
  • Isolated(独立性) -> Idempotent(べき等の)
  • Durable(永続性) -> Distributed(分散の)

 


RDBマンセー、Coddラブなワタシとしては、にわかに受け入れがたい概念だけど、スケールするウェブシステム作りには必要になっていくと思う。そろそろパラダイムシフトが必要かもしれない。

参考サイト

{Fight the Future => じゅくのblog}-クラウドでの新しいACID、そしてBASEトランザクションとCAP定理

ScalabilityとAvailability 早稲田大学 丸山不二夫

BrewersCapTheorem – ブリュワーの CAP 定理

CAPとBASEとEventually Consistent

カテゴリー: DBA, knowledge, クラウド タグ:

アドミニストレーション( administration )とマネジメント( management )の違い

2009 年 5 月 23 日 tdtsh Comments off

アドミニストレーションも、マネジメントも、共に「管理」と訳される場合が多い。

個人的なイメージとしては、

アドミニストレーションは「行政執行」、マネジメントは「経営管理」。

システムのライフサイクル上の運用フェーズにおいて、「システム管理」と言う言葉は、システム・アドミニストレーションの方がしっくりくる。

また「運用管理」と言う言葉は、オペレーション・マネジメントの方がしっくりきますね。

コンピュータ・システムに関する用語は横文字がやたら多いけど、日本語に適切な語彙が無いんだから仕方が無い場合が多いですね。

でも、「管理」に関しては、何もコンピュータ・システムに限った話では無い筈。最初に訳した人達が悪いのか、適切な言葉が見つからなかったのか定かでは無いけど、ちょっと困りんです。

カテゴリー: knowledge, management タグ:

Google App Engine for Java と RDBMS

2009 年 5 月 23 日 tdtsh Comments off

先日、Google App Engine for Javaをちょこっとだけ触ってみました。

IaaSのAmazon EC2と違い、GAEはPaaSなので、開発には色々と制約もありますが、サイト立上げ時の構築の容易さでは、既存のホスティングサーバはもとより、Amazon EC2と比較しても、ハンパ無い楽さがあります。

一定以上のアクセス数になるまで、しばらくは無償やし。

制限で一番気に喰わないのは、RDBMSが使えない、BigTableを使わないといけないこと。一応、tdtshはデータベースのエンジニアのつもりなので、ここが一番気持ち的に嫌だ。

GAE for java上での永続化のコードの書き方自体は、JDOを使う様だ。
HibernateとかのO/Rマッパーを使うときのソレと似た様なものの様だから、特に難しくなさそう。
でもO/Rマッパーはデータ設計がへぼかったり、オブジェクト指向丸出しでコード書いてると、性能面でかなり痛い目にあう。
それと似たようなクセがありそうだナァ。

BigTableも、機嫌よく動かす為には、色々と勉強する事も、捨てなくてはいけない拘りも有りそうだ。

でも、toC向けWEBサービスを立ち上げを考える時、とりわけそれをビジネスにしたい場合、GAEは研究するに値しますね。

GAE上でRDBMSがサポートされたらうれしいけど、無理っぽいなぁ。

BigTableって何ぞや?は、「Googleを支える技術」を一読ください。

Googleを支える技術 ?巨大システムの内側の世界 (WEB+DB PRESSプラスシリーズ)
西田 圭介
技術評論社
売り上げランキング: 8233
おすすめ度の平均: 4.5

4 量との戦いは、質との戦い
5 グーグルの電気代は気にしたことなかった…
4 エンジニア向けグーグル本
4 「Google誕生」との併読がおすすめ
5 大変わかりやすい

カテゴリー: Google App Engine, java, web, 書評 タグ:

SAMBA に robocopy で ERROR 5 (0×00000005) Changing File Attributes

2009 年 5 月 22 日 tdtsh Comments off

robocopy で、リモートのNTFS (Windows 2003 Server) から、リモートのSAMBAサーバにバックアップを取ることがあります。

稀に、こんなエラーが発生して、全然コピーができないときがあります。

2009/05/22 09:43:26 ERROR 5 (0×00000005) Changing File Attributes \\WINDOS_SERVER\path\to\copye

アクセスが拒否されました。

Waiting 1 seconds… Retrying…

SAMBAサーバ、NTFSの両方のACL上のパーミッションには問題ない。

NTFS側に、Read Onlyフラグを明示的に全部オフにしたが、変わらず。

エラーの意味は、文字通り Attributeが関係している様だ。

robocopy のオプションで、/COPYというのんがあり、デフォルトは/COPY:DAT。

DはData、AがAttribute、TがTimestampだ。

んで、/COPY:D を明示指定してやると、解決しました。

何でたまにそうなるかは、わからない。気にしないでおこう。

アーカイブビットを操作しようとして、失敗しているのかな?

カテゴリー: インフラ タグ:

Amazon EC2 はじめの一歩

2009 年 5 月 21 日 tdtsh Comments off

Amazon EC2を試してみたので、そのメモです。

環境構築とAMI起動、S3に保存までです。

クレジットカード片手に、Amazon EC2の申し込みをします。

全部英語ですが、そんなに難しくありません。

http://aws.amazon.com/ec2/

:JREがインストール済みである事が前提です。

http://www.java.com/ja/

:[Amazon EC2 API Tools]をダウンロード

http://developer.amazonwebservices.com/connect/entry.jspa?categoryID=88&externalID=351

:ダウンロードした[Amazon EC2 API Tools]を解凍

:解凍したフォルダをリネーム

c:\ec2-api

:CMD.exe起動

md c:\ec2

Amazon EC2よりキーファイルを、c
\ec2にダウンロード

https://aws-portal.amazon.com/gp/aws/developer/account/index.html

:環境変数をセット

set JAVA_HOME=C:\Program Files\Java\jre6

set EC2_PRIVATE_KEY=c:\ec2\pk-XXXXXXXXXX2DPN437UDKN2F2GINZRI.pem

set EC2_CERT=c:\ec2\cert-XXXXXXXXXX2DPN437UDKN2F2GINZRI.pem

set EC2_HOME=c:\ec2-api

set PATH=%PATH%;%EC2_HOME%\bin;%JAVA_HOME%\bin

:バージョン確認

ec2ver

:Amazon EC2への接続確認 ( AMIのリストが表示されれば成功 )

ec2-describe-images -o amazon

ec2-describe-images -x all

:起動させるインスタンスにSSH接続するためのKeypair作成

ec2-add-keypair my-keypair

:AMIを起動

ec2-run-instances ami-7254b01b -k my-keypair

:インスタンスのステータス確認

ec2-describe-instances

#——————————————————————–

RESERVATION r-5dac3534 027383474356 default

INSTANCE i-b589f2dc ami-7254b01b ec2-67-202-21-253.compute-1.amazonaws.com domU-12-31-38-00-25-E7.c

ompute-1.internal running my-keypair 0 m1.small 2009-05-20T11:03:38+0000 us-east-

1c aki-9b00e5f2 monitoring-disabled

#——————————————————————–

:パーミッション設定

ec2-authorize default -p 22

ec2-authorize default -p 80

ssh -v -i my-keypair root@ec2-67-202-21-253.compute-1.amazonaws.com

:全インスタンスのステータス確認

ec2-describe-instances

#——————————————————————–

RESERVATION r-9dbd24f4 027383474356 default

INSTANCE i-c3a0dbaa ami-7254b01b terminated my-keypair 0 m1.small 2009-05-20T08:37:41+0000 aki-9b00e5f2 monitoring-disabled

RESERVATION r-bbbe27d2 027383474356 default

INSTANCE i-71a4df18 ami-7254b01b pending my-keypair 0 m1.small 2009-05-20T09:00:15+0000 us-east-1c aki-9b00e5f2 monitoring-disabled

#——————————————————————–

AMI作成

:インスタンスに「X.509証明書」を転送

scp -i my-keypair *.pem root@ec2-67-202-21-253.compute-1.amazonaws.com:/mnt

:AMIを作成

ssh -v -i my-keypair root@ec2-67-202-21-253.compute-1.amazonaws.com

ec2-bundle-vol -d /mnt –privatekey pk-XXXXXXXXXX2DPN437UDKN2F2GINZRI.pem –cert cert-XXXXXXXXXX2DPN437UDKN2F2GINZRI.pem –user 0273-8347-4356 –fstab /etc/fstab

Please specify a value for arch [i386]:

で i386 [Enter]

:AMIをS3に保存

ec2-upload-bundle –bucket slowaim –manifest image.manifest.xml –access-key XXXXXXXXXXXXXX –secret-key XXXXXXXXXXXXXXXXX

:AMIの登録

ec2-register slowaim/image.manifest.xml –cert cert-XXXXXXXXXX2DPN437UDKN2F2GINZRI.pem –private-key pk-XXXXXXXXXX2DPN437UDKN2F2GINZRI.pem

IMAGE ami-2ff11746

:Ownerが自分のAMIの確認

ec2-describe-images -o self –private-key pk-XXXXXXXXXX2DPN437UDKN2F2GINZRI.pem –cert cert-XXXXXXXXXX2DPN437UDKN2F2GINZRI.pem

IMAGE ami-2ff11746 slowaim/image.manifest.xml 027383474356 available private i386 machinea ki-9b00e5f2

:既存インスタンスの停止

ec2-terminate-instances i-c3a0dbaa

:作成したAMIからインスタンスを起動

ec2-run-instances ami-2ff11746 -k my-keypair

:AMI確認

ec2-describe-instances

INSTANCE i-6b81fa02 ami-2ff11746 ec2-174-129-119-73.compute-1.amazonaws.com domU-12-31-38-00-8C-D6.c

ompute-1.internal running my-keypair 0 m1.small 2009-05-20T11:38:11+0000 us-east-

1c aki-9b00e5f2 monitoring-disabled

:SSH接続

ssh -v -i my-keypair root@ec2-174-129-119-73.compute-1.amazonaws.com

:既存インスタンスの停止

ec2-terminate-instances i-6b81fa02

:一応、登録したAMIの削除方法

ec2-deregister AMIのID

:もういっかい、インスタンスの保存をする

scp -i my-keypair *.pem root@ec2-174-129-119-73.compute-1.amazonaws.com:/mnt

cd /mnt

ec2-bundle-vol -d /mnt –privatekey pk-XXXXXXXXXX2DPN437UDKN2F2GINZRI.pem –cert cert-XXXXXXXXXX2DPN437UDKN2F2GINZRI.pem –user 0273-8347-4356 –fstab /etc/fstab

ec2-upload-bundle –bucket slowaim –manifest image.manifest.xml –access-key XXXXXXXXXXXXXXX –secret-key XXXXXXXXXXXXXXX

カテゴリー: Amazon EC2, クラウド タグ: