0

現在、db 管理の頭痛の種を取り除く唯一のホストされている完全にスケーラブルな nosql システムとして、dynamodb を調べてきました。

私は現在、フィード データが mongodb に挿入される RSS フィード インデックス作成システムを使用しています。次に、sphinxsearch がデータベース全体をループし、さまざまなフィールドにインデックスを付けます (メイン + デルタ インデックスを使用しますが、ここで説明する必要はありません)。

sphinx を使用すると、複雑なクエリと並べ替えを行うことができ、記事 ID の順序付き配列が得られます。これらの ID で mongo をクエリすると、mongo 配列を並べ替えて、sphinx が提供する順序に一致させます。

function prepare_for_mongo($keys){
    $results_keys_mongo = array();
    if(sizeof($keys)>0){
        foreach($keys as $key=>$value){
            $results_keys_mongo[$key] = new MongoID($value);
        }
    }
    return $results_keys_mongo;
}

function sort_mongo_results($documents,$keys){
    $documents_sorted = array();
    foreach($keys as $key){
        $documents_sorted[$key] = $documents[$key];
    }
    return $documents_sorted;    
}

function retrieve_records($keys) {
    $m_keys = $this->prepare_for_mongo($keys);
    if(!empty($m_keys)) {
        $records = iterator_to_array($this->mongodb->find(array(
            '_id' => array('$in' => $m_keys)
        )));
        $records = $this->sort_mongo_results($records,$keys);
    } else {
        return array();
    }
}

さて、dynamodb に移行するための探求において、php の dynamodb で同様のクエリを実行するにはどうすればよいでしょうか。ハッシュキーのリスト (記事レコードを表す一意のハッシュ) を渡すと、dynamo はそれらのハッシュ キーを含むすべてのレコードの結果を返します。

4

2 に答える 2

0

私は解決策を見つけました。awssdk関数は次のようにbatch_get_itemなり、haskeyの配列を渡すことができます。

于 2013-03-11T09:33:44.660 に答える
0

解決策が存在するかどうかはわかりません。SphinxSearch は、SQL データベースを指している間にこのタスクを達成するように構築されているようです。DynamoDB (NoSQL) では、バッキング インデックスを DynamoDB に保存しながら、データのインデックス作成と検索を行うために、おそらく SphinxSearch に相当するものを自分で作成する必要があります。この場合の「答え」は、少なくとも中規模の開発プロジェクトです。

于 2013-03-08T22:45:08.510 に答える