私は4億行のパーティション化されたmysqlテーブルに緯度/経度座標を持っています。 テーブルは@分2000レコード増加し、古いデータは数週間おきにフラッシュされます。 このデータの空間解析を行う方法を模索しています。MySQL Postgresql/PostGIS
ほとんどの解析では、ポイントが特定の緯度/経度のポリゴンにあるかどうか、またはそのポリゴンにそのポイントが含まれているかどうかを調べる必要があります。
私は、ポリゴン内のポイントに取り組むの次の方法(PIP)の問題を参照してください。
ポイントとジオメトリを取り、ブール値を返すのMySQL関数を作成します。 シンプルだがわからないジオメトリは球ではなく平らな面を想定しているので、緯度/経度座標の操作を行うためにジオメトリを使用する方法。
カスタムデータ構造のポイントと識別子を取得し、ブール値を返すmysql関数を作成します。 ポリゴン頂点はテーブルに格納でき、関数は球面計算を使用してPIPを計算できます。ポリゴンポイントが多数あると、テーブルが膨大になりクエリが遅くなる可能性があります。
ポイントデータをmysqlに残し、PostGISにポリゴンデータを保存し、アプリケーションサーバを使用してPostGISでPIPクエリをパラメータとしてプロビジョニングします。
アプリケーションをMySQLからPostgresql/PostGISに移植します。 これは、クエリとプロシージャの書き換えに多くの労力を必要とします。 私はまだそれを行うことができますが、4億行を処理するPostgresqlはどれくらい良いですか。 googleで「mysql 10億行」をすばやく検索すると、多くの結果が返されます。 Postgresの同じクエリは関連する結果を返しません。
は、いくつかの考えに&提案を聞きたいです。
私は300M以上の行テーブルを持つPostgresを個人的に使っています。 SkypeはPgを使用して接続、ユーザ、経理などを追跡します。通信チャネル自体を除くすべて。それは何十億という記録です。 – dbenhur
300Mに達するのはどれくらい簡単か難しいですか?どのくらい調整/最適化が必要でしたか?私はPostgresを使ってSkypeについて読んだことがありましたが、大企業はリソースを投げて仕事をすることができます。私が探しているのはあなたのようなインプットです。 – Dojo
私たちのPostgreSQLデータベースは、過去2年間〜1ヶ月あたり約5,000件のトランザクションを処理します。以前のMySQLサーバは同じハードウェア上でこれを処理できませんでした。 –