0

我一直将 dynamodb 视为目前唯一托管的完全可扩展的 nosql 系统,我发现它可以消除数据库管理的麻烦。

我目前有一个 RSS 提要索引系统,其中提要数据被插入到 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 实现类似的查询,我可以在其中传递哈希键列表(表示文章记录的唯一哈希),然后 dynamo 为我提供包含这些哈希键的所有记录的结果?

4

2 回答 2

0

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

于 2013-03-08T22:45:08.510 回答
0

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

于 2013-03-11T09:33:44.660 回答