php dynamodb - 如何在(key1,key2,key3)中查询“hashkey”?

时间:2013-03-08 22:30:21

标签: php amazon-web-services amazon-dynamodb

我一直在关注dynamodb,因为它是目前唯一一个托管完全可扩展的nosql系统,我发现它可以解决数据库管理问题。

我目前有一个RSS feed索引系统,其中feed数据被插入到mongodb中,然后sphinxsearch循环遍历整个数据库并索引各个字段(我使用main + delta索引但不需要在这里解释)。

使用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实现类似的查询,我可以传递一个hashkeys列表(表示文章记录的唯一哈希)然后dynamo给我一个包含那些记录的所有记录的结果哈希键?

2 个答案:

答案 0 :(得分:0)

我不确定是否存在解决方案。 SphinxSearch似乎是为了在指向SQL数据库时完成此任务而构建的。使用DynamoDB(NoSQL),您可能必须自己编写等效的SphinxSearch来索引和搜索数据,同时在DynamoDB中存储支持索引。在这种情况下,“答案”至少是一个中型开发项目。

答案 1 :(得分:0)

我确实找到了解决方案,aws sdk函数为batch_get_item,然后我可以传递一个haskey数组。