私はデータベースMongoDBで作業しています。リソースの消費量が多いため(100GB近くのデータセットで作業するため)、文書のフィールド名を小さくする必要があります( "ALTER TABLE" )。MongoDB - 文書構造の変更
これを行うには簡単/自動ではありますか?
私はデータベースMongoDBで作業しています。リソースの消費量が多いため(100GB近くのデータセットで作業するため)、文書のフィールド名を小さくする必要があります( "ALTER TABLE" )。MongoDB - 文書構造の変更
これを行うには簡単/自動ではありますか?
だと思います!
http://www.mongodb.org/display/DOCS/Updating#Updating-%24rename
$rename
Sの束と、クエリを使用して設定してデータの
update()
を実行し、私はそれが何をしたいあなたを取得すると思う:
$rename
をチェックしてください。
これを行うための組み込みの方法はありませんが、目的の言語でスクリプトを記述することができます。もう1つの選択肢は、文書にアクセスするときに短いフィールド名を使用するように文書を書き直すようにアプリケーションコードを更新することです。これは、ダウンタイムやスクリプトとアプリケーションコードの調整を必要としないという利点があります。
フィールド名を縮小しても、データセットは同じサイズのままです - MongoDBはドキュメントを「周り」に残して、ドキュメントを適切な位置に更新します。ワーキングセットのサイズ。これは、新しい文書に合わせるのに十分な空き容量があれば、文書が大きくなるとInMemoDBがインプレースで更新されるため、文書が大きくなることが予想される場合に便利です。
また、repairDatabase
コマンドを使用すると、データセットが縮小されます。 repairDatabase
は非常に遅く、かなりの空きディスク容量が必要です(データベース全体のフルコピーを作成する必要があります)。 repairDatabase
はデータベース全体をロックするので、スケジュールされたメンテナンスウィンドウで実行する必要があります。
最後に、バージョン1.9以降を使用している場合は、compact
コマンドを使用できます。 compact
は、repairDatabase
よりも少ない空き容量が必要です(追加の2ギガバイトのディスクスペースが必要です)。また、一度に1つのコレクションでのみ動作します。 compact
は、repairDatabase
と同じ方法でデータベースをロックし、メンテナンスウィンドウでの圧縮のスケジュール設定に関する同じ警告が適用されます。
レプリカセットを使用すると、ダウンタイムなしでこれを実行できます。 –
ありがとうございました。 – dcrosta
ありがとうございます。私はコンパクトについて聞いたことがない、それも試してみる:-) –
これは探していたものです。どうもありがとうございました! –