[英]Anyway to do MongoDB Sharding in PHP?
我已經開始將MongoDB用於我的PHP項目之一。 在該數據庫中,我嘗試使用MongoDB分片概念。 我獲得了以下鏈接並嘗試過,
運行良好。 但是問題是,在上面的示例中,所有操作都在命令提示符下完成。 但是我正在嘗試用PHP做所有事情。 我無法在PHP中獲得任何示例。
到目前為止,我已經從這些代碼開始,
$connection = new Mongo();
$db = $connection->selectDB('TestDB');
$db = $connection->TestDB;
$connection->selectDB('admin')->command(array('addshard'=>'host:port'));
$connection->selectDB('admin')->command(array('enablesharding'=>'TestDB'));
$connection->selectDB('admin')->command(array('shardcollection'=>'TestDB.large', 'key' => '_id'));
它不起作用。 另外,我不知道如何在PHP中設置分片服務器和配置數據庫。
還有其他方法可以在PHP中進行MongoDB分片嗎?
MongoDB的數據庫命令區分大小寫。 您傳遞的是小寫的命令名稱,而真實的命令是駝峰式的(請參閱: sharding命令 )。 另外, shardCollection
的key
參數必須是一個對象。
您的上述代碼的更正版本如下所示:
$connection->selectDB('admin')->command(array('addShard'=>'host:port'));
$connection->selectDB('admin')->command(array('enableSharding'=>'TestDB'));
$connection->selectDB('admin')->command(array('shardCollection'=>'TestDB.large', 'key' => array('_id' => 1)));
此外,您應該能夠檢查的命令結果以確定為什么此命令不起作用。 ok
字段將為零,而errmsg
字段將說明該錯誤(例如“ no such cmd:Addshard”)。
最后,如果您試圖模仿Shell的功能來配置PHP中的分片,您可能會意識到某些Shell方法不僅僅是數據庫命令。 對於任何一種方法,都可以通過省略括號來獲取JS源代碼。 例如:
> sh.addTagRange
function ( ns, min, max, tag ) {
var config = db.getSisterDB( "config" );
config.tags.update( {_id: { ns : ns , min : min } } ,
{_id: { ns : ns , min : min }, ns : ns , min : min , max : max , tag : tag } ,
true );
sh._checkLastError( config );
}
對於PHP中的addTagRange()
函數需要做什么,這將是一個有用的提示。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.