MongoDBのinsertはPostgreSQLより12倍速かった

テスト環境

Amazon EC2 m1.largeインスタンス
CentOS 6.0
MongoDB 2.0.1
PostgreSQL 8.4.9

両方ともtar.gzからインストールしました。
MongoDB : http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.0.1.tgz
PostgreSQL: ftp://ftp2.jp.postgresql.org/pub/postgresql/source/v8.4.9/postgresql-8.4.9.tar.gz

テストケース

PHPから、ウェブアプリのログ的なデータを10万件insertします。
PostgreSQL
テーブル定義
CREATE TABLE actionlog (
    id serial,
    user_id integer NOT NULL,
    actionname character varying(255) NOT NULL,
    actiontime timestamp without time zone NOT NULL,
);
テストスクリプト
<?php

$conn = pg_connect("dbname=sample user=hoge");

for ($i = 0; $i < 100000; $i++) {
        $sql = "INSERT INTO actionlog (user_id, actionname, actiontime) values($i, 'action_foo_bar',now())";
        pg_query($sql);
}
MongoDB
テストスクリプト
<?php

$mongo = new Mongo();
$db = $mongo->sample;
$collection = $db->actionlog;

for($i=0;$i<100000;$i++) {
        $doc = array(
                'user_id' => $i,
                'actionname' => 'action_foo_bar' ,
                'actiontime' => time(),
        );

        $collection->insert($doc);
}

測定結果

上記スクリプトをそれぞれ3回ずつ実行して平均値をとりました。

MongoDB    3.15秒
PostgreSQL 37.16秒

実に、MongoDBの方がPostgreSQLより12倍速いという結果になりました。
素晴らしいですね!
カテゴリ: