私はDBの設計と開発にかなり慣れていません。私の要件は、時間と単語の言語(特定の日の言語)に基づく単純なドリルダウン/スライスです。ただし、私のdbはmysqlです。しかし、これまでのところ、この種のクエリを実行することはできません。そのため、このデータを手動で計算してテーブルに格納しています。
私のアプリケーションをより具体的にするために、iPhoneでチャート/グラフを表示する必要があります。つまり、ユーザーが1日あたり、1週間あたり、1か月あたりの言語ごとの単語の使用状況です。リアルタイムは必要ありませんが、ユーザーの1か月の使用量の行は約5000です。
Mysqlがウェアハウススキーマを持ち、パフォーマンスの問題なしにそのようなクエリを実行できるかどうかを知りたい。私の選択肢は何でしょうか。
私は本当にエンタープライズソリューションにお金を払うことはできません。自分のアプリケーションでこの種の処理のためのコードを書く準備ができていますが、正しい方法に移行したいと思っています。
私にとって最も理想的なケースは、ツールを使用せずに現在のデータベースにファクトとディメンションを作成し、APIをシフトしてこれらのOlapクエリを実行できることです。私が集めたものから、これはmysqlでは不可能です。 Postgresはいくつかの約束を示していますが、まだ読んでいます。
データベースアクセス言語としてPython=を使用して、この要件にMySQLまたはPostgreSQLを使用できます。私はPythonキューブを使用したことがないので、話せません。それ。
ウィンドウ関数 と CTEs (一般的なテーブル式)があるPostgreSQLを使用することをお勧めします。また、CHECK CONSTRAINTと 集合演算子 の全範囲をサポートしています。
MySQLは、読み取りが重いOLTPデータベースのロードに適しており、他にはほとんどありません。
PostgreSQLは、分析作業(DW-データウェアハウジング、またはOLAP)に優れており、同時にOLTPアリーナの総合的な優れ物です。
これは非常に広い答えですが、それは質問も非常に広いためです。
MySQLはこれまでOLAPに焦点を合わせたことはありませんでした。特定の理由により、そのメインエンジンであるInnoDBおよびMySQLクラスタ(NDB)はOLTPロードに対して最適化されています。分析クエリの実行は、読み取りが含まれるため、通常低速です。行がたくさん。
MySQLでOLAPを実行できなかったことを意味するわけではありません。データベース構造が変更されたMySQLでこれを行うには オプションを提案している人もいます があります。 InfiniDBまたはImpala のように、予想されるクエリに応じて役立つ場合とそうでない場合があるエンジンとコネクタ。
そうは言っても、 代替データベースエンジンを検索する は、ニーズに適している可能性があります。