【问题标题】:php dynamodb - how to do a "hashkey in (key1, key2, key3)" query?php dynamodb - 如何执行“hashkey in (key1, key2, key3)”查询?
【发布时间】:2013-02-24 14:44:07
【问题描述】:

我一直将 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 给我一个包含这些记录的所有记录的结果哈希键?

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-07-11
        • 2023-04-05
        • 1970-01-01
        • 2016-12-25
        • 1970-01-01
        • 2017-11-02
        • 1970-01-01
        • 2013-10-21
        相关资源
        最近更新 更多