私はPHPおよびMySQLをエンタープライズで使用するために使用する典型的なWebアプリケーションを構築しました。
MySQLデータベースは可能な限り3NFです。
ただし、時間が経つにつれ、データウェアハウスに対するデータの要求が増えるように見えるため、データを好きなようにスライスおよびダイシングできます。
そこで私は、キンボールグループの第3版データウェアハウスツールキットを入手しました。
著者の内部では、キンボールDW/BIアーキテクチャと、DW/BIの目的で次元テーブルとファクトテーブルにスタースキーマを使用することについて説明しました。下記参照。
私の質問は、PHPおよびMySQLに精通しているため、元の3NFデータベースとは別のデータベースにデータウェアハウススタースキーマを配置する必要がありますか?
商用のBIツールは使用されません。 OLAPまたはBIのように見えるものは、おそらく私が自分で拡張するオープンソースソフトウェアでしょう。
お知らせ下さい。
[〜#〜]編集[〜#〜]
私の3NF MySQLデータベース全体は現在約20MBで、毎月約1MBずつ増加しています。
私のコメントへのあなたの返答に応えて、PostgreSQLがDWの仕事に輝いているいくつかの領域、特にCTE
s(一般的なテーブル式-別名WITH
句)とウィンドウ関数(別名OVER
句)。
MySQLにこれらがないと、これらをエミュレートするために独自のハックを作成することになります(そして、軽視することはありませんが、コードにバグがないようになるにはしばらく時間がかかります)。一方、PostgreSQLでは、箱から出してすぐに使用できます。 PostgreSQLには、優れたGIS
サポート(必要な場合)と優れたJSON
-MySQLでのみ実験的サポートもあります。
見てください ここ
PostgreSQLは伝統的に、信頼性、データの整合性、および開発者向けの統合機能に重点を置いてきました。非常に洗練されたクエリプランナーがあり、比較的多数のテーブルを効率的に結合できます。
一方、MySQLは伝統的に主にPHPで記述された読み取りが主なWebアプリに焦点を合わせてきましたが、その主な関心事は単純なクエリの最適化です。
DWタイプのアプリでは、後者よりも前者の方がはるかに多く必要です。
また、 this out-2つのシステムのごく最近の比較を確認してください。私の見解では、特にPostgreSQLは2つのうち優れています。 DW作業用。
これらのページを PostgreSQL および MySQL 機能について熟読することができます。ここには特定の「宗教戦争」要素があり、私はあなたがMySQLの経験をすでに持っているという事実を覚えています。 DWプロジェクトをご利用いただきありがとうございます。
[OPのコメントに応じて編集]
OLTP
とOLAP
の作業用に別々のデータベースを用意することをお勧めします-予算内であれば。 OLTP
とOLAP
は根本的に異なり、それらを混在させると多くの競合が発生します-私は、「マネージャー」が日中にライブシステムに対してレポートの実行を要求することによって引き起こされる苦痛を知っています。私があなただったら、MySQLをOLTP
システムとして、PostgreSQLをOLAP
として使用します。
しかし、どのような構成を選択する場合でも、個別のサーバーを強くお勧めします。
私が1つのデータベースと1つだけを選択することを余儀なくされた場合、それはためらうことなくPostgreSQLになります。 MySQLは最初のインターネットブームの間、本質的に幸運で適切な場所に適切なソフトウェアを使用していた。私見、PostgreSQLは間違いなく技術的に優れています。
私はMySQLを悪用することはありません-私はそれをたくさん使用しました(クライアント!)そして、あなたがその癖と一緒に暮らしたり、回避することができれば、それは非常にパフォーマンスが高く、いくつかの興味深い機能を持っていることがわかります-特にストレージエンジンの選択肢(これはPostgreSQLではできません)。
MySQLのDW領域には、将来的にこの領域で前向きになる可能性のある2つの興味深い開発があります。これらは、列型ストアエンジン Infinidb および Infobright です。現時点での問題は、Infinidbが停止したように見えることです。 code がまだ使用可能であるにもかかわらず、インストールガイドが表示されなくなり、 [〜#〜] ice [〜#〜] (Infobright Community Edition)は本質的にクリップルウェアです。 Entrepriseエディションを評価することもできます。
いくつかのテストケースを設定することをお勧めします。実行するレポートの種類を想像し、両方のシステムでそれらを試してください。特にOLAP
システムに必要な複雑なレポートについて考えてください。はるかに豊富なPostgreSQL SQL言語が説得力のある議論であることがわかると思います。
特定のRDBMSに焦点を合わせていないが、次の質問に。
元の3NFデータベースとは別のデータベースにデータウェアハウススタースキーマがあるべきか
私は言うでしょう:absofrickenlutely YES !!
OLTP( "元の3NFデータベース"と呼びます)とOLAPは、データの見方がまったく異なり、通常、2つの異なるシステムに対する期待は大きく異なります。したがって、異なる構成などにつながるさまざまなニーズがあります。
また、「データベース」という用語に関して厳密に質問を解釈して、同じサーバーにOLTP用とOLAP用の2つの別個のデータベースを置くことを意味している場合、私はその答えを明確にしますあなたは本当に別のサーバーが必要だと言います: