BT

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

寄稿

Topics

地域を選ぶ

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

この記事に星をつける

おすすめ度
スタイル

BT