このデータベースの総まとめでは、新しいActiveRecord向けのデータshardingプラグインおよび、どのようにしてPostgresデータアクセスが非同期クライアントAPIで改善することができるのかについて検討する。
ActiveRecord向けデータsharding
データshardingとは、データベースを小さいパーティションに分割し、それらを複数のサーバに配分し、パフォーマンスと拡張可能性を改善する技法で ある。データの区分化方法は、アプリケーションに大いに依存している。たとえばeBayは、記事のカテゴリーごとに区分している。
ActiveRecordは、 追加設定なしのデータshardingをサポートしない。そこでFiveRunsのDataFabric(リンク)の出番である。DataFabricはActiveRecordプラグインであり、データ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