2014-01-10 7 views
14

Ι私の文書はPointsです。地理空間インデックスを追加することを検討します。ですから、私は2dsphere2dを選択することができます。2dsphere対2dインデックス:「より良い」/より速い?

MongoDB.orgがあります

2dsphereインデックスはサポートしています。

- Calculations on a sphere 
- Both GeoJSON objects and legacy coordinate pairs 
- A compound index with scalar index fields (i.e. ascending or 
    descending) as a prefix or suffix of the 2dsphere index field 

2Dインデックスはサポートしています。

- Calculations using flat geometry 
- Legacy coordinate pairs (i.e., geospatial points on a flat 
    coordinate system) 
- A compound index with only one additional field, as a suffix of 
    the 2d index field 

をしかし、私のすべての文書は、私が持つことができるのいずれかのポイントであるため、私のスキーマでは以下のオプションがあまり違いはありません。 2dsphereため

location : { 
     type : "Point" , 
     coordinates : [10,45] 
} 

または2Dインデックスのために:

location : [10,45] 

私の質問は1つが速くなるに降りてきますか?私は本当にそれを測定する方法の手がかりを持っていません。

質問は、私はデータのみの正方形のboxを照会すると、複雑なポリゴン検索のために気にしないことを前提としています。どちらか一方だけ2D指数(私が正しく読まれている場合)またはの$polygon方法でサポートされてい$box$geoWithi nは両方のインデックスでサポートされています。

+0

なぜあなたは、インデックスの種類/クエリとDEV /ステージング環境でのいくつかのデータの両方でテストしていませんか?データがRAMに読み込まれているかどうかを確認し、より公平な比較があることを確認するために、多くの反復でパフォーマンスを平均する必要があります。新しい2dsphereインデックスを使用することが望ましいと思いますが、パフォーマンスの比較は見ていません。 – Stennie

答えて

3

既に行ったリサーチに加えて、私はこれらの2つのインデックスの間に別の違いがあることを追加したかっただけです。

既定では、従来の座標ペアの2dインデックスは26ビットの精度を使用します。これはデフォルトで-180〜180の範囲を使用して2フィートまたは60センチメートルの精度に相当します。精度はビット単位のサイズロケーションデータを格納するために使用されるgeohash値の地理空間索引は、最大32ビットの精度で構成できます。

db.<collection>.ensureIndex({<location field> : "<index type>"} , { bits : <bit precision> })

出典: MongoDB doc reference

関連する問題