BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Scott Leberknight氏、多言語パーシステンスについて語る

Scott Leberknight氏、多言語パーシステンスについて語る

ブックマーク

原文(投稿日:2009/7/27)へのリンク

エンタープライズ ソフトウェア開発におけるデータ パーシステンス (データ永続化) ソリューションは、近年大きな発展を遂げてきた。データベース分野には、パーシステンスのデフォルト選択としてリレーショナル データベース システムを使用する以外にも、数多くの多様な選択肢がある。先ごろのLone Star Software Symposiumのカンファレンスで、Scott Leberknight氏は「多言語パーシステンス」に関するプレゼンテーションを行った。多言語パーシステンスでは、開発者は、データ パーシステンス ソリューションを決定する上で、AmazonのSimpleDB、GoogleのBigtable、Microsoft SQL Data Services (SDS)、CouchDBなど、さまざまなデータベース製品を選択できる。

かつて2006年12月に、Neal Ford氏は、多言語プログラミングについて書き、その中で、現在業界で注目されている言語選択の動向を予測している。これは、手近な一定の作業にはそれに適した言語を使用するとした動きだ。多言語プログラミングとは、JavaやC#など「デフォルト」言語を決めず、また単に適切なフレームワークを使用するのではなく、その作業に適した言語を使用することであり、これと同様のことがパーシステンス問題にも応用できる。

Scott氏は、次のように述べた。「開発者には、MVCやAJAXフレームワークの分野で多くの選択肢 (Struts、Apache MyFaces、Spring MVC、Wicket、 Rails、Grails、jQuery、dojo、Ext JSなど) があり、エンタープライズ アプリケーションのデータ パーシステンス要求に対応するとなれば、選択肢はさらに広がる。」多言語パーシステンスとは、パーシステンス要件を考慮し、この要件を最大限に満たすパーシステンス メカニズムを選択することだ。

エンタープライズ アプリケーションの機能要件や技術要件は多様なため、「万能な方法はない」。データ パーシステンス領域のイノベーションを促進している要因として、以下のものが挙げられる。

  • 拡張性
  • 高可用性
  • 耐障害性
  • 分散性
  • 柔軟性 (すなわち「スキーマレスな」データベース)
  • ソーシャル ネットワーク サイトなど、新しいタイプのアプリケーション

アプリケーションで管理されるデータのタイプもまた、全く異なっている。それは、構造化 (リレーショナル データ) 、半構造化 (たとえば、医療記録システムのドキュメント) 、非構造化 (オーディオ/ビデオ ストリーム) のいずれかに該当するだろう。さまざまなタイプのデータベース (オブジェクト指向ドキュメント指向、Bigtable、キーバリュー型、Entity Attribute Valueデータベース システムなど) が、さまざまなデータ パーシステンス要件に対応するため登場した。

氏は、ACID (Atomicity (原子性)、Consistency (一貫性)、Isolation (独立性)、Durability (耐久性)) とBASE (Basically Available, Soft State which becomes Eventually Consistent (基本的に使用可能で、最終的に一貫性を実現する柔軟な状態変化)) のコンセプトについて語った。この2つのコンセプトは、データ ベース システムのトランザクションや可用性において重要な役割を果たす。ACIDとBASEでは、異なるパーシステンスが保証され、トレードオフの対象も異なる。たとえば、ACIDシステムでは、可用性の代償にデータの一貫性が保証される。このため、2相コミットの事例では、仮に1つでもトランザクション リソースがダウンした場合、システムの可用性はゼロということになる。一方、BASEでは、データの即時一貫性と引き換えに高可用性や分割耐性が犠牲となる。これは、一貫性を犠牲にして、より高い可用性、耐障害性、冗長性の恩恵を受けるか否かを決める難しい局面である。

ドキュメント指向データベースには、Lotus Notes、Apache CouchDB、AmazonのSimpleDB、ThruDBなどがある。Scott氏は、REST APIを使用し、SimpleDBデータベースとCouchDBのビューにアクセスしてデータベースに格納されているドキュメントを集計しレポートを作成する事例を見せた。

Project Voldemortも、データ パーシステンス ソリューションの一つだ。Project Voldemortは、分散キーバリュー型 ストレージ システムであり、透過的なサーバ障害対応、データ項目の自動バージョニングなどの機能を備えている。Project Voldemortは、LinkedInのシンプルな機能分割が十分とは言えないが高い拡張性を備えたストレージ対策に使用されている。LinkedInのJay Kreps氏は、来たるQConカンファレンスでProject Voldemortについて講演する予定だ。

同氏は、キーバリューベースのデータ ストレージ システムであるAmazonのDynamoやApache HBaseなど、他のデータベース製品について検討した。Apache HBaseは、オープン ソース、分散、列指向のデータストアであり、Google Bigtableの実装をモデルに作られた。データ パーシステンスの分野には、さらに多くの選択肢 (XMLデータベース、セマンティック ウェブ/RDF、TriplestoresTuplespacesなど) がある。

この新しいデータ パーシステンス システムのほとんどは、RESTベースのAPIをさまざまな言語 (Java、C#、PHP、Visual Basic、Rubyなど) で提供している。Scott氏は、開発者が、データベース ソリューションに関して、現在多用されているものではなく、アプリケーションで実際に必要とするものについて考慮するよう勧めた。データ パーシステンス ソリューションを決める上で考慮すべき条件の一部を以下に示す。

  • プロジェクトの要件
  • 分散配置
  • 耐障害性
  • クエリの複雑さ
  • スキーマ進化
  • 拡張性の最大幅
  • リレーションを強化する能力
  • ACIDまたはBASE
  • キーバリュー型ストレージ

この記事に星をつける

おすすめ度
スタイル

BT