JAva mongodb問題セットの使用
1944 ワード
1.jsとjava言語の違い:
質問:
mongoはjsエンジンであるため、現在のアプリケーションの多くはjava開発を採用しているが、jsは強い言語タイプではないため、書き込まれたjsonに数字が含まれている場合に問題が発生する.
jsは数字がnumberタイプであると考えられ、言い換えればjsのnumberタイプに対応する強いタイプの言語のfloatは、1つのデータを書き込むとjavaで整形に変換すると失敗する.
解決:
jsを使用してmongodbを更新することは禁止されています.saは使用時にクエリーのみを許可し、変更と追加は許可されていません.
2.クエリーmongodbレプリケーションセットに読み取り圧力が分散されていません:
質問:
mongodb replicate setsアーキテクチャは、認証を設定し、slaveOk()をオンにします.すべての読み取りは対応するsecondaryに割り当てられていません.
解決:
mongodbは実行時に設定したslaveOk()が自由なので、後退後に再設定しなければなりません.
したがってjavaコードでは、ライブラリから読むかどうかを明確に説明する必要があります.コードは次のとおりです.
3.maxBsonObjectSize
アプリケーション開発では、ドキュメント(document)のサイズが異なる場合が多いが、mongodbサーバ側ではドキュメントサイズが設定されており、以前のバージョンでは4 M、後に16 Mに設定されている.
一方、ドライバのデフォルトは4 Mで、サーバからデータを取得すると、サーバ側のデータが採用されます.
JAvaドライバによる最大bsonデータコードの取得は以下の通りです.
取得したmaxBsonObjectSizeのデータは,サーバ側のこのデータを修正すればよい.
具体的な設定は次のとおりです.
------
author: madding.lip
date: 2012.02.09
質問:
mongoはjsエンジンであるため、現在のアプリケーションの多くはjava開発を採用しているが、jsは強い言語タイプではないため、書き込まれたjsonに数字が含まれている場合に問題が発生する.
jsは数字がnumberタイプであると考えられ、言い換えればjsのnumberタイプに対応する強いタイプの言語のfloatは、1つのデータを書き込むとjavaで整形に変換すると失敗する.
解決:
jsを使用してmongodbを更新することは禁止されています.saは使用時にクエリーのみを許可し、変更と追加は許可されていません.
2.クエリーmongodbレプリケーションセットに読み取り圧力が分散されていません:
質問:
mongodb replicate setsアーキテクチャは、認証を設定し、slaveOk()をオンにします.すべての読み取りは対応するsecondaryに割り当てられていません.
解決:
mongodbは実行時に設定したslaveOk()が自由なので、後退後に再設定しなければなりません.
したがってjavaコードでは、ライブラリから読むかどうかを明確に説明する必要があります.コードは次のとおりです.
mongo.setReadPreference(ReadPreference.SECONDARY);
db.setReadPreference(ReadPreference.SECONDARY);
,
3.maxBsonObjectSize
アプリケーション開発では、ドキュメント(document)のサイズが異なる場合が多いが、mongodbサーバ側ではドキュメントサイズが設定されており、以前のバージョンでは4 M、後に16 Mに設定されている.
一方、ドライバのデフォルトは4 Mで、サーバからデータを取得すると、サーバ側のデータが採用されます.
JAvaドライバによる最大bsonデータコードの取得は以下の通りです.
int fetchMaxBsonObjectSize() {
if (_masterPortPool == null)
return 0;
DBPort port = _masterPortPool.get();
try {
CommandResult res = port.runCommand(_mongo.getDB("admin"), new BasicDBObject("isMaster", 1));
// max size was added in 1.8
if (res.containsField("maxBsonObjectSize")) {
_maxBsonObjectSize.set(((Integer) res.get("maxBsonObjectSize")).intValue());
} else {
_maxBsonObjectSize.set(Bytes.MAX_OBJECT_SIZE);
}
} catch (Exception e) {
_logger.log(Level.WARNING, "Exception determining maxBSONObjectSize ", e);
} finally {
port.getPool().done(port);
}
return _maxBsonObjectSize.get();
}
取得したmaxBsonObjectSizeのデータは,サーバ側のこのデータを修正すればよい.
具体的な設定は次のとおりです.
------
author: madding.lip
date: 2012.02.09