BT

InfoQ ホームページ ニュース データベースの総まとめ:ActiveRecord向けデータshardingおよびPostgres向け高速IO

データベースの総まとめ:ActiveRecord向けデータshardingおよびPostgres向け高速IO

ブックマーク

このデータベースの総まとめでは、新しいActiveRecord向けのデータshardingプラグインおよび、どのようにしてPostgresデータアクセスが非同期クライアントAPIで改善することができるのかについて検討する。

 

ActiveRecord向けデータsharding

データshardingとは、データベースを小さいパーティションに分割し、それらを複数のサーバに配分し、パフォーマンスと拡張可能性を改善する技法で ある。データの区分化方法は、アプリケーションに大いに依存している。たとえばeBayは、記事のカテゴリーごとに区分している。

ActiveRecordは、 追加設定なしのデータshardingをサポートしない。そこでFiveRunsDataFabric(リンク)の出番である。DataFabricActiveRecordプラグインであり、データshardingおよびレプリケーション機能をモデルに追加する。

shardingをモデルに追加することは非常に簡単である。README(リンク)の例を以下に示す。

 

class MyHugeVolumeOfDataModel < ActiveRecord::Base
  data_fabric :replicated => true, :shard_by => :city
end

詳細は、FiveRunsのブログ(リンク)またはDataFabric GitHubリポジトリ(リンク)を参照。

 

Postgres向け高速IO

データベース関連のその他のニュースとしては、Muhammed Ali氏がRubyのPostgresアクセスをおよそ40%押し上げることに成功した。Postgresの非同期クライアントAPIおよびRuby 1.9 Fibers(参考記事・英語)を使用し、非閉塞接続プールおよびファイバープールを実装する。ユーザプログラムの観点から見た対話は、以下のとおりである。

[..] いったんファイバーがcpool.execを呼び出すと、クエリーが処理のためにプールに送られ、ファイバーが一時停止し、別の処理が開始する。 cpool.execにヒットすると、その処理も停止する。その後イベントループで、クエリーの完了通知を(任意の順序で)受け取り、完了したクエリーに 関連したファイバーを再開する。

またMuhammed氏はEventMachine(参考記事)とのより優れた統合に向けた取り組みについて、検討している。それによりパフォーマンスのさらなる向上が期待できる。詳細に分析をし、使用したコードについて説明しているMuhammad氏のブログ(リンク)を参照するとよい。

原文はこちらです:http://www.infoq.com/news/2008/07/databases-roundup

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

BT

あなたのプロファイルは最新ですか?プロフィールを確認してアップデートしてください。

Eメールを変更すると確認のメールが配信されます。

会社名:
役職:
組織規模:
国:
都道府県:
新しいメールアドレスに確認用のメールを送信します。このポップアップ画面は自動的に閉じられます。