2011-10-21 17 views
0

私はここ3異なるデータベースについてこのベンチマーク読んだことがある:私は読んで最適化データ型(C#の)

http://blog.cubrid.org/dev-platform/nosql-benchmarking/

を、私はMongoDBのは、「インメモリデータベース」であることがわかり、すべてのデータであればそうのDBは RAMにロードすることができますDBのパフォーマンスは非常に良いです。それ以外の場合は非常に貧しいです。 MongoDBは "データがない"プロジェクトに適していると読んでいます。

私はすべてのドキュメントを最適化するために私の最初のプロジェクトについて調査しました。

BYTEフィールドを持つ私のドキュメントは、MongoによってInt32に変換されます。

public partial class i_Room 
    { 
     [BsonId(IdGenerator = typeof(ObjectIdGenerator))] 
     public ObjectId _id { get; set; } 

     public global::System.Byte TypeRoom; 
     public global::System.Byte ModeRoom; 
    } 

フィールド「TypeRoom」と「ModeRoomは」MongoDBの中でのInt32に変換されます。私は、データベースのデータをイントロスペクションするためにMongoVUEを使用しています。私はこれが記憶にとって非常に危険だと思う。

私の質問は、私がMONGoのBYTEデータを最適化するために必要なことですか?

答えて

0

何十億ものレコードを使用している場合を除いて、これはあまりにも傷つくことはありません。 (int32は4バイトのみ)

必要に応じて、bsonタイプのバイナリを使用できます。これはbyte []と等価です。

0

BSONのバイナリデータ型は可変長で、1バイトのサブタイプフィールドも含むため、5バイトのオーバーヘッドがあるため、バイナリとして1バイトを格納するには6バイト必要です。

4バイト整数として保存するほうがよいでしょう。