Ⅰ 通過java代碼是否能夠判斷MongoDB集群的某個表設置了分片
下面的示例是官方文檔中給出的collections的其中一個document:
{
"_id" : "records.pets", --Database name.Collection name
"lastmod" : ISODate("1970-01-16T15:00:58.107Z"),
"dropped" : false,
"key" : {
"a" : 1 --Shard key
},
"unique" : false,
"lastmodEpoch" : ObjectId("bd58b175c5c225fdc")
}
使用Java代碼檢索上述collection,可獲悉所需分片信息。
Ⅱ java操作mongodb group
推薦你去CSDN發帖子,在知道里很少有人會給你看代碼的
Ⅲ mongodb集群添加上集群管理用戶卻無法用mongoVUE連接
mongodb添加了集群管理或者主從復制的話,使用mongoVUE是可以連接的。
但是通過mongoVUE工具無法添加新的collections。
針對已有的collection還是可以進行相關的操作(增刪改查等) 。
可以考慮使用robomongo來管理mongodb.
Ⅳ 淺談如何用Java操作MongoDB
本文主要講述如何使用Java操作MongoDB以及了解MongoDB如何進行日常的資料庫操作。文章內容如下:第一步:安裝MongoDB無需太多的繁雜步驟,你只要在MongoDB官方網站查看安裝說明,根據自己的操作系統進行選擇適應的版本即可。第二步:啟動MongoDB伺服器這一步也很簡單。運行mongod.exe文件里的bin文件夾(我使用的是Windows OS系統),並啟動MongoDB伺服器。在默認的情況下伺服器將啟動埠27017,你需要在安裝過程中創建將數據存儲在/data/db目錄里。第三步:啟動MongoDB shell指令你可以通過運行mongo.exe文件來啟動MongoBD shell。第四步:利用MongoDB創建資料庫利用MongoDB在MongoDB shell中輸入以下內容建立一個名為「company」的資料庫。use company 記住,除非你在MangoDB里保存了一些東西,否則它不會自動為你保存。使用下面的命令幫你查看可用的資料庫,它會顯示「company」尚未被創建。show dbs; 第五步:在MongoDB中保存數據使用下面的命令來保存employee 數據代表一個collection,將其命名為employees。employee = {name : "A", no : 1} db.employees.save(employee) 通過使用下面的命令來查看collection里的數據。db.users.find(); 如何使用Java操作MongoDB?下面是是一段簡單的Java代碼,你可以在這里獲得mongo-java驅動。很簡單,只需要使用下面的代碼,重復上面的操作即可。package com.eviac.blog.mongo; import java.net.UnknownHostException; import com.mongodb.BasicDBObject; import com.mongodb.DB; import com.mongodb.DBCollection; import com.mongodb.DBCursor; import com.mongodb.Mongo; import com.mongodb.MongoException; public class MongoDBClient { public static void main(String[] args) { try { Mongo mongo = new Mongo("localhost", 27017); DB db = mongo.getDB("company"); DBCollection collection = db.getCollection("employees"); BasicDBObject employee = new BasicDBObject(); employee.put("name", "Hannah"); employee.put("no", 2); collection.insert(employee); BasicDBObject searchEmployee = new BasicDBObject(); searchEmployee.put("no", 2); DBCursor cursor = collection.find(searchEmployee); while (cursor.hasNext()) { System.out.println(cursor.next()); } System.out.println("The Search Query has Executed!"); } catch (UnknownHostException e) { e.printStackTrace(); } catch (MongoException e) { e.printStackTrace(); } } } 結果如下:{ "_id" : { "$oid" : "4fec74dc907cbe9445fd2d70"} , "name" : "Hannah" , "no" : 2} The Search Query has Executed! 小結:隨著互聯網Web2.0網站的興起,非關系型的資料庫現在成了一個極其熱門的新領域,非關系資料庫產品的發展也非常迅速。本文淺顯的談及了如何使用Java操作MongoDB以及了解MongoDB如何進行日常的資料庫操作的問題。如果您是這方面的專家不妨與我們分享下。本文為CSDN編譯整理,未經允許不得轉載。
Ⅳ mongodb 客戶端怎麼集群連接
下載mongoDB(mongoDB下載地址),筆者使用的是mongoDB 2.0.4的Linux 64-bit版本。
解壓:tar xzf mongo.tgz
默認情況下,mongoDB將數據存儲在/data/db目錄下,但它不會自動創建該目錄,所以我們需要手動創建它:
$ sudo mkdir -p /data/db/
$ sudo chown `id -u` /data/db
也可以使用--dbpath參數來指定別的資料庫目錄。
如果只是想在單機上測試一下mongoDB的話,非常簡單,首先啟動MongoDB server,
$ ./mongodb-xxxxxxx/bin/mongod
在另外一個終端,連接到我們啟動的server:
$ ./mongodb-xxxxxxx/bin/mongo
> db.foo.save( { a : 1 } )
> db.foo.find()
Ⅵ java mongodb怎麼獲取是否開啟集群模式
一般嘗試連接服務並做一次操作,成功則表示服務開啟,失敗則表示沒有開啟。
Ⅶ java操作MongoDB
package com.mkyong.core;
import java.net.UnknownHostException;
import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.Mongo;
import com.mongodb.MongoException;
/**
* Java + MongoDB Hello world Example
*
*/
public class App {
public static void main(String[] args) {
try {
//實例化Mongo對象,連接27017埠
Mongo mongo = new Mongo("localhost", 27017);
//連接名為yourdb的資料庫,假如資料庫不存在的話,mongodb會自動建立
DB db = mongo.getDB("yourdb");
// Get collection from MongoDB, database named "yourDB"
//從Mongodb中獲得名為yourColleection的數據集合,如果該數據集合不存在,Mongodb會為其新建立
DBCollection collection = db.getCollection("yourCollection");
// 使用BasicDBObject對象創建一個mongodb的document,並給予賦值。
BasicDBObject document = new BasicDBObject();
document.put("id", 1001);
document.put("msg", "hello world mongoDB in Java");
//將新建立的document保存到collection中去
collection.insert(document);
// 創建要查詢的document
BasicDBObject searchQuery = new BasicDBObject();
searchQuery.put("id", 1001);
// 使用collection的find方法查找document
DBCursor cursor = collection.find(searchQuery);
//循環輸出結果
while (cursor.hasNext()) {
System.out.println(cursor.next());
}
System.out.println("Done");
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (MongoException e) {
e.printStackTrace();
}
}
}
最後,輸出的結果為:
{ "_id" : { "$oid" : "4dbe5596dceace565d229dc3"} ,
"id" : 1001 , "msg" : "hello world mongoDB in Java"}
Done
在上面的例子中,演示了使用Java對Mongodb操作的重要方法和步驟,首先通過創建Mongodb對象,傳入構造函數的參數是Mongodb的資料庫所在地址和埠,然後使用
getDB方法獲得要連接的資料庫名,使用getCollection獲得數據集合的名,然後通過新建立BasicDBObject對象去建立document,最後通過collection的insert方法,將建立的document保存到資料庫中去。而collection的find方法,則是用來在資料庫中查找document。
Ⅷ mongodb集群 不設置分片可以嗎
mongo從下載後解壓後的目錄結構如下:我們視安裝目錄為:${MONGO_INSTALL}
先在第一台計算機上在${MONGO_INSTALL}下分別執行:
mkdir -p /data/shard11
bin/mongod -shardsvr -port 27017 -dbpath=/data/shard11/ -logpath=/data/shard11.log --fork
再在另一台機器上也分別執行:mkdir -p /data/shard12
bin/mongod -shardsvr -port 27017 -dbpath=/data/shard12/ -logpath=/data/shard12.log --fork
正常情況下你能啟動這兩個節點的。如果啟動不成功。那就是mkdir -p /data/shard11沒有成功創建。
在Ubuntu系統下你需要root許可權:
sudo mkdir /data/shard11
sudo chmod -R 777 /data/shard11
然後啟動。在終端中分別執行檢查Mongod進程是否成功啟動:ps -ef |grep mongod
如果任何一台沒有啟動成功,重復上面的,直到找出原因。
OK,現在我們成功的分別在2太計算機上啟動了1個mongod實例,mongod是真正存儲數據的進程。進群中還需要一個配置伺服器,用來存儲在各個節點中共享的配置信息,存儲數據的元信息[METADATA],也如上面我結構圖中config.
config不會佔用太多資源的。我們在其中任何一台上面啟動Mono的Config,shell如:
#config也是存儲少量數據的,不要忘了給它創建存儲數據的文件夾
mkdir /data/config
bin/mongod -configsvr -dbpath=/data/config -port 20000 -logpath=/data/config.log --fork
也許你已經注意到,在2台shard的啟動參數中加了-shardsvr,在配置實例中加了-configsvr。 mongo就是這樣進行區分的。當然復制的配置應該是: -replSet setName。 setName就是復制集群的別名。
當以上都啟動成功,我們可以開啟mongos服務了。在任何一台機器上執行:
#mongos進程不需要dbpath,但是需要logpath
#mongos啟動參數中,chunkSize這一項是用來指定chunk的大小的,單位是MB,默認大小為200MB
bin/mongos -configdb ip:20000 -port 30000 -chunkSize 512 -logpath=/data/mongos.log --fork
請注意上面的IP,這個IP應該是你啟動config的那台機器ip和port。
如果順利的話,你也應該能輕松的啟動mongos進程的。可以執行查看:ps -ef |grep mongos
現在就剩下配置了。讓mongos進程知道哪些機器是需要加入到分片的。在任何一台機器上執行[mongosip為啟動mongos服務的機器IP]:
bin/mongo ip:30000/admin
注意後邊的admin,配置分片必須要鏈接admin集合。鏈接成功後你就可以把分片加入集群:db.runCommand({"addshard":"192.168.1.23:27017"})
db.runCommand({"addshard":"192.168.1.22:27017"})
上邊的兩個ip都是第一次啟動的shard的ip地址,不是config 。
如果順利,你應該能看到{ 」ok「 : 1}的字樣。這樣你就成功的把兩個shard加入了分片。現在你還需要制定分片的規則。
db.runCommand({"shardcollection":"dbname.tablename", "key":{"primaryKey":1}})
最後你還需要激活分片的設置。db.runCommand({"enablesharding": "ndmongo"})
OK,走到最後你應該成功的配置了分片。
現在你需要在剛才指定dbname和tablename插入一定數量的數據。測試集群:
db.printShardingStatus()
你能看到類似如下的輸出[shard中有2台機器,並且databases也存在你的dbname的partitioned為true的信息]:
現在你應該能體驗自己的分片了。
如果你的機器是64位的,你用我的配置應該很容易的就成功了。如果你用的32位的,你應該還要注意在啟動shard的時候加上:
--journal因為64位默認啟動開啟journal的,32位沒有。至於journal什麼作用我也不太清楚,讀者自己google吧。
Ⅸ 如何部署MongoDB分片集群
這是一種將海量的數據水平擴展的資料庫集群系統,數據分表存儲在sharding的各個節點上,使用者通過簡單的配置就可以很方便地構建一個分布式MongoDB集群。
MongoDB 的數據分塊稱為 chunk。每個 chunk 都是 Collection 中一段連續的數據記錄,通常最大尺寸是 200MB,超出則生成新的數據塊。
要構建一個 MongoDB Sharding Cluster,需要三種角色:
Config Server
為了將一個特定的collection存儲在多個shard中,需要為該collection指定一個shard key,例如{age: 1} ,shard key可以決定該條記錄屬於哪個chunk。Config Servers就是用來存儲:所有shard節點的配置信息、每個chunk的shard key范圍、chunk在各shard的分布情況、該集群中所有DB和collection的sharding配置信息。
Route Process
這是一個前端路由,客戶端由此接入,然後詢問Config Servers需要到哪個Shard上查詢或保存記錄,再連接相應的Shard進行操作,最後將結果返回給客戶端。客戶端只需要將原本發給mongod的查詢或更新請求原封不動地發給Routing Process,而不必關心所操作的記錄存儲在哪個Shard上。轉載,僅供參考。