現在、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 はそれらのハッシュ キーを含むすべてのレコードの結果を返します。