71

編集:私はPostGISでPostgresを数ヶ月使用していますが、満足しています。

ジオコーディングされた数百万のレコードを分析する必要があります。各レコードには緯度と経度があります。これらのレコードには、少なくとも3つの異なるタイプのデータが含まれており、各セットが他のセットに影響を与えるかどうかを確認しようとしています。

このすべてのデータの基盤となるデータストアに最適なデータベースはどれですか?これが私の願いです:

  • 私はDBMSに精通しています。私はPostgreSQLが一番苦手ですが、他のすべてがチェックアウトされているかどうかを知りたいと思っています。
  • GISクエリでうまく機能します。グーグル検索はPostgreSQL+PostGISが最強かもしれないことを示唆していますか?少なくとも多くの製品がそれを使用しているようです。MySqlの空間拡張は比較的最小限に見えますか?
  • 低価格。SQL Server Express 2008R2では10GBのDB制限がありますが、無料バージョンのこの制限やその他の制限に耐えたいかどうかはわかりません。
  • Microsoft.NETFrameworkと拮抗しません。Connector / Net 6.3.4のおかげで、MySqlはC#および.NETFramework4プログラムでうまく機能します。.NET4のEntityFrameworkを完全にサポートします。DevartのdotConnectforPostgreSQL Professional Editionに180ドルを支払うことに反対していませんが、非営利のPostgreSQLに相当するものは見つかりません。
  • Rと互換性があります。これら3つすべてがODBCを使用してRと通信できるように見えるため、問題にならない可能性があります。

私はすでにMySqlを使用していくつかの開発を行っていますが、必要に応じて変更できます。

4

5 に答える 5

68

私は3つのデータベースすべてを操作し、それらの間で移行を行ったので、古い投稿に何かを追加できることを願っています。10年前、私はGMLから空間データベースに大きなデータセット(4億5000万個の空間オブジェクト)を配置するという任務を負いました。私はMySQLとPostgisを試してみることにしました。当時、SQL Serverには空間がなく、起動時の雰囲気も小さかったので、MySQLはぴったりのようでした。その後、MySQLに参加し、いくつかの会議に出席/講演し、バージョン5.5で最終的にリリースされたMySQLのよりGIS準拠の機能のベータテストに深く関わりました。その後、空間データをPostgisに移行し、企業データ(空間要素を含む)をSQLServerに移行することに携わってきました。これらは私の発見です。

MySQL

1)。安定性の問題。5年間で、データベースの破損に関する問題がいくつか発生しました。これは、インデックスファイルでmyismachkを実行することによってのみ修正できました。このプロセスは、4億5,000万行のテーブルで24時間以上かかる可能性があります。

2)。最近まで、MyISAMテーブルのみが空間データ型をサポートしていました。これは、トランザクションサポートが必要な場合は運が悪いことを意味します。InnoDBテーブル型は空間型をサポートするようになりましたが、空間データセットの一般的なサイズを考えると、それらのインデックスはそれほど有用ではありません。http://dev.mysql.com/doc/refman/5.0/en/innodb-restrictions.htmlを参照してください。会議に参加した私の経験では、空間は非常に後から付け加えられたものでした。レプリケーション、パーティショニングなどを実装しました。ただし、spatialでは機能しません。編集:次の5.7.5リリースでは、 InnoDBは最終的に空間列のインデックスをサポートします。つまり、ACID、外部キー、および空間インデックスが最終的に同じエンジンで使用できるようになります。

3)。空間機能は、PostgisとSQLServerの両方の空間と比較して非常に制限されています。ジオメトリフィールド全体に作用するST_Union関数はまだありません。これは、私が最も頻繁に実行するクエリの1つです。つまり、次のように記述できません。

select attribute, ST_Union(geom) from some_table group by some_attribute

これは、GISコンテキストで非常に役立ちます。Select ST_Union(geom1, const_geom) from some_tableつまり、ジオメトリの1つは、ハードコードされた定数ジオメトリであり、比較すると少し制限があります。

4)。ラスターはサポートされていません。db内でベクトルラスター分析を組み合わせて実行できることは、非常に便利なGIS機能です。

5)。ある空間参照系から別の空間参照系への変換はサポートされていません。

6)。Oracleによる買収以来、spatialは実際に保留されています。

全体として、MySQLに公平を期すために、MySQLは、当社のWebサイト、WMS、および一般的な空間処理を数年間サポートし、セットアップが簡単でした。欠点は、データの破損が問題であり、MyISAMテーブルの使用を余儀なくされることで、RDBMSの多くの利点を放棄することになります。

Postgis

MySQLで発生した問題を考慮して、最終的にPostgisに変換しました。この経験の要点は次のとおりです。

1)。非常に安定しています。5年間でデータの破損はなく、現在、さまざまな程度の負荷の下で、centos仮想マシン上に約25個のPostgres/GISボックスがあります。

2)。開発の急速なペース-ラスター、トポロジー、3Dサポートがこの最近の例です。

3)。非常に活発なコミュニティ。Postgisircチャネルとメーリングリストは優れたリソースです。Postgisリファレンスマニュアルも優れています。http://postgis.net/docs/manual-2.0/

4)。GeoServerやGDALなどのOSGeo傘下の他のアプリケーションと非常によく連携します。

5)。ストアドプロシージャは、PythonやRなどのデフォルトのplpgsqlとは別に、多くの言語で記述できます。

5)。Postgresは、非常に標準に準拠した、フル機能のRDBMSであり、ANSI標準に近い状態を維持することを目的としています。

6)。ウィンドウ関数と再帰クエリのサポート-MySQLではなくSQLServerで。これにより、より複雑な空間クエリの記述がよりクリーンになりました。

SQLサーバー。

私はSQLServer2008の空間機能のみを使用しましたが、そのリリースの煩わしさの多く(1つのCRSから別のCRSへの変換のサポートの欠如、空間インデックスに独自のパラメーターを追加する必要性)が解決されました。

1)。SQL Serverの空間オブジェクトは基本的にCLRオブジェクトであるため、構文は逆に感じられます。ST_Area(geom)の代わりにgeom.STArea()を記述します。これは、関数をチェーン化するとさらに明白になります。関数名にアンダースコアを付けるのは、ちょっとした煩わしさです。

2)。SQL Serverで受け入れられた無効なポリゴンがいくつかありますが、ST_MakeValid関数がないため、これが少し面倒になる可能性があります。

3)。Windowsのみ。一般に、Microsoft製品(ESRI製品など)は相互に非常にうまく機能するように設計されていますが、標準のコンプライアンスと相互運用性を主な目的として常に持っているわけではありません。Windowsのみのショップを運営している場合、これは問題ではありません。

更新:SQL Server 2012で少し遊んだことで、大幅に改善されたと言えます。現在、優れたジオメトリ検証機能があり、複数の半球を占めるオブジェクトを表すことができるFULL GLOBEオブジェクトを含む、Geographyデータ型の優れたサポートと、正確でコンパクトに役立つ複合曲線と円形文字列のサポートがあります。とりわけ、円弧(および円)の表現。あるCRSから別のCRSへの座標の変換は、サードパーティのライブラリで行う必要がありますが、これはほとんどのアプリケーションでのショーストッパーではありません。

私はPostgis/MySQLと1対1で比較するのに十分な大きさのデータセットでSQLServerを使用していませんが、関数が正しく動作することを確認したところ、Postgisほど完全には機能していませんが、MySQLの製品は大幅に改善されています。

長い回答をお詫び申し上げますが、私が長年苦しんできた苦痛と喜びの一部が誰かの助けになることを願っています。

于 2014-03-22T10:20:14.733 に答える
54

完全な比較に興味がある場合は、「SQL Server 2008 Spatial、PostgreSQL / PostGIS 1.3-1.4、MySQL5-6の相互比較」および/または「SQLServer2008 R2、Oracle 11G R2、PostgreSQL / PostGIS1.5Spatialの比較」をお勧めします。ボストンGISによる「機能」 。

あなたのポイントを考慮して:

  • 私はDBMSに精通しています。WindowsでのPostGISデータベースのセットアップは簡単で、PgAdmin3管理の使用も簡単です。
  • それはGISクエリでうまくいきます: PostGISは間違いなく3つの中で最強です、Oracle Spatialだけが比較可能ですが、そのコストを考慮すると失格になります
  • 低コスト:確かにPostGISの+1
  • Microsoft .NET Frameworkと拮抗しない:少なくともODBC経由で接続できる必要があります(Postgres wikiを参照) 。
  • Rと互換性があります: 3つのいずれでも問題はないはずです
于 2010-09-18T22:42:36.093 に答える
19

PostGisは間違いなく。これが理由です。

  1. PostgresはMySQLよりもパフォーマンスがはるかに優れています。サーバーはよりフォールトトレラントであり、負荷分散、キャッシング、および最適化のためのすぐに使えるツールを備えています。
  2. PostGISはGISアプリの標準になりつつあります。
  3. それは無料です。
于 2010-09-18T21:53:15.743 に答える
0

MySQLが最終的に適切なGISロジックに追加されたことに注意してください。

http://dev.mysql.com/doc/refman/5.6/en/functions-for-testing-spatial-relations-between-geometric-objects.html

しかし、この段階ではコストやパフォーマンスについてコメントすることはできません

于 2012-05-23T02:40:08.797 に答える
0

PostGISは、最近GISアプリケーションの標準になりつつあり、PostGISは無料であるため、最適です。パフォーマンスにおいてMySQLよりはるかに優れています

于 2012-09-22T07:59:30.370 に答える