2013-03-08 56 views
0

我一直在寻找dynamodb作为它目前唯一的托管完全可扩展的nosql系统,在那里我可以发现,把db管理的头痛带走了。我现在有一个RSS feed索引系统,feed数据被插入到mongodb中,然后sphinxsearch循环遍历整个数据库并索引各个字段(以及我使用主+ delta索引,但不需要在此解释)。php dynamodb - 如何做一个“(key1,key2,key3)”查询中的hashkey?

随着狮身人面像,我可以做复杂的查询和排序,它给了我一个有序的文章ID的数组,一旦我用这些ID查询mongo,然后重新排序mongo数组以匹配狮身人面像给我的顺序。现在

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列表(唯一的哈希表示文章记录),然后发电机给我的结果所有包含这些散列键的记录?

回答

0

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

0

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

相关问题