問題タブ [data-warehouse]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql-server - 大規模な ETL 文字列ルックアップのパフォーマンスの問題
ETL プロセスのパフォーマンスに問題があります。40 億行以上のテーブルがあります。構造は次のとおりです。
idbigint ID(1,1)raw_urlvarchar(2000) が null ではないmd5hashchar(32) が null ではないjob_control_numberint null ではない
id のクラスター化された一意のインデックスと md5hash の非クラスター化の一意のインデックス
SQL Server 2008 エンタープライズ ページ レベルの圧縮がオンになっています
Web サーバー ログから生の URL をディメンションとして保存する必要があります。生の文字列が 900 文字を超えるため、その列に一意のインデックスを配置することはできません。md5 ハッシュ関数を使用して、インデックス作成用の一意の 32 文字の文字列を作成します。テーブル内で重複する raw_url 文字列を許可することはできません。
問題はパフォーマンスの低下です。もちろん、md5hash は本質的にランダムであるため、インデックスの断片化は 50% に達し、非効率的な IO につながります。
これを構造化して、挿入と検索のパフォーマンスを向上させ、インデックスの断片化を減らす方法についてのアドバイスを探しています。
data-warehouse - 非リレーショナル データベース モデリング ツール?
皆さん、DW、DataMart、BI および非リレーショナル モデリングで成功裏に使用したツールをいくつかお勧めしてください。スノーフレーク スキーマ、ディメンション、およびファクト テーブルの自動作成の例。どのツールを使用すると、ダイアグラムとサロゲート キーに慣れることができ、SQL Server 2008 へのエクスポートまたは接続のオプションがあります。
ありがとう
data-warehouse - 複数のデータベース接続と集中型/冗長データベース
既存のシステムに接続するダッシュボードを作成するプロジェクトと、既存のシステムのデータを組み合わせて新しい機能を作成するプロジェクトがあります。たとえば、ダッシュボードは、「メンバー」(MS Access DB)、「従業員」(MySQL DB)、「製品」(フラットファイル)からマージされたデータを含む「注文」を生成できます。また、特定の新しい属性もあります。 「注文」に。
最初は、アプリケーションを各システムに個別に接続し、異なるデータベース間でベンダー間結合を実行するのが最も効率的だと思いました。しかし、一元化された/冗長なデータベース(システム間でデータをプッシュおよびプルするスクリプトで構築された)を作成することも、一部の半技術スタッフが単一の接続しかできないOOBaseなどの製品を使用できるようになるため便利だと思いました。
私が話しているような一元化された/冗長なDBを作成することに他の利点はありますか?または、複数の直接接続が最善のアプローチですか?
ヒントを事前に感謝します。
postgresql - データ ウェアハウジング Postgres
SSIS を使用して PostgreSql データ ウェアハウスを維持することを検討しています。以前は問題なく SQL Server 間で使用していましたが、Postgres でうまく動作させるのは非常に困難です。OLEDB PGNP データ プロバイダー ( http://www.postgresql.org/about/news.1004 ) の評価版を使用しています。
ファクト テーブルの UPSERT のような単純なものから始めたかったのですが (1 万から 1 万 5 千行が毎日更新/挿入されます)、これは非常に難しいことがわかりました (言うまでもなく、将来的には代理キーを使用したいと思います)。
私は(http://blogs.msdn.com/b/mattm/archive/2008/11/22/lookup-pattern-upsert.aspx)および(http://consultingblogs.emc.com/jamiethomson/archiveを試みました/2006/09/12/SSIS_3A00_-Checking-if-a-row-exists-and-if-it-does_2C00_-has-it-changed.aspx ) これらは事実上同じです (ユニオンを本当に理解していないことを除いて)アップサートしようとしているときに最後にすべて)しかし、OLEDb コマンドを使用して更新を行うときに、パラメーターで同じ問題に遭遇します。 /library/ms141773.aspx ) しかし、それはうまくいかないようです。検証エラーが発生します –
complent の外部列.... データソース列と同期していません... 外部列「Param_2」を外部列から削除する必要があります。(このエラーは最初の 2 つのパラメーターでも繰り返されます。名前付きパラメーターをサポートしているため、SQL 接続を使用してこれに遭遇したことはありません)
誰かがこれに出くわしましたか?
と:
この単純なタスクを SSIS で行うのは明らかに非常に難しいという事実は、私がその仕事に間違ったツールを使用していることを示唆しています。これを行うためのより良い (そしてまだ柔軟な) 方法はありますか? それとも、2 つの Postgres データベース間で使用するのに別の ETL パッケージの方が適していますか? -その他のオプションには、( http://en.wikipedia.org/wiki/Extract,_transform,_load#Open-source_ETL_frameworks ) にリストされているものが含まれます。これを実行するために大量の SQL を作成することもできますが、きちんとした簡単に保守できるソリューションが必要でした。
c# - 50GB以上のDBのデータベーススキーマを支援する
大量のgpsデータといくつかの追加情報をデータベースに保存し、レポートやその他の頻繁ではないタスクのためにそれにアクセスするタスクがあります。
GPSデバイスからメッセージを受信すると、フィールドの数が変化する可能性があります。例えば
メッセージ1:DeviceId LatLonスピードコース
DIO1ADC1メッセージ2:DeviceIdLatコースDIO2IsAlarmOn
メッセージ3:DeviceId LatLon高さコースDIO2IsAlarmOnなど最大20〜30フィールド
さまざまなデバイスベンダー、さまざまなプロトコルなど、フィールドの数を統一する方法はありません。また、データベースのサイズと、できるだけ多くのdbベンダーをサポートする必要があるという問題もあります(NHibernateが使用されます)。
だから私はそのようにメッセージを保存することを思いついた:
Table1-Tracks
PK-TrackId
TrackStartTime
TrackEndTime
FirstMessageIndex(stores MessageId)
LastMessageIndex(stores MessageId)
DeviceId(FKではない)
表2-メッセージ
PK-MessageIdTimeStampFirstDataIndex (stores
DataId
)
LastDataIndex(stores DataId)
表3-MessageDataPK
-DataIddouble
Data
short DataType
すべてのインデックスはhiloで割り当てられます。Nhibernateが3000+kメッセージの認証を迅速に処理できるようにクエリを調整しました(バッハも使用されます)。パフォーマンスATMに満足しています。しかし、50GB以上または100GB以上のサイズでどのように機能するかはわかりません。
私の問題とストレージ設計全体に関するヒントやヒントに非常に感謝します=)
ありがとう、Alexey
PS。私の英語をお詫びします=)
data-warehouse - 無料のデータ ウェアハウジング システム、特にデータ ストレージ用
私は私たちのウェブサイト (1 日に数百万ページビューを取得する適切なサイズのサイト) 用にいくつかのレポート機能を構築しており、無料またはオープン ソースの優れたデータ ウェアハウス システムが存在するかどうか疑問に思っています。
具体的には、データを保存するものだけを探しています。関心のある情報が表示されるように、カスタム フロント エンド/UI を構築する予定です。ただし、このためにカスタマイズされたデータベースを構築する必要はありません。ここでは SQL データベースが機能しないことは確かですが、正確に何を使用すればよいかわかりません。役立つ記事へのポインタも高く評価されます。
編集:言及する必要があります-私が簡単に見たDBの1つはMongoDBでした。うまくいくように見えますが、彼らの「ユースケース」では、データウェアハウスが「あまり適していない」と具体的に言及されています: http://www.mongodb.org/display/DOCS/Use+Cases . また、特にデータ ウェアハウジングを対象としているようには見えません。
oracle - Oracleデータウェアハウスの設計-ディメンションとして機能するファクトテーブル?
ありがとう:ここでの両方の答えは非常に役に立ちますが、私は1つしか選ぶことができませんでした。アドバイスありがとうございます!
当社のデータウェアハウスは、従来の分析レポートよりもワークフローレポートに多く使用されます。私たちのユーザーは、歴史よりもはるかに「現在の写真」に関心を持っています。(歴史も重要ですが。)私たちは、費用や関連する計算を持たない政府機関です。ほとんどの場合、特定の場所にあり、関連する履歴を持つ人の数だけです。
私たちはOracleを使用していますが、可能な限りスター結合を使用することには明確な利点があり、ビジネスでの使用に適したスタースキーマにできるだけ類似するようにすべてを再設計したいと思います。このDWの速度は非常に重要であり、多くのテストでスタースキーマアプローチがすでに証明されています。
私たちの「人」テーブルが重要です。これには400万を超えるレコードが含まれており、クエリで最も頻繁に使用されるソースになります。 それは、複数の次元(年齢、性別、所属、場所など)を持つ星の中心に見ることができます。これは非常に長いテーブルであり、特にアドレスと連絡先情報に結合すると非常に長くなります。
ただし、履歴を見始めると、ディメンションテーブルのようなものになります。たとえば、人物テーブルを指す人物キーを持つ2つの異なる履歴テーブルがあります。1つは2000万を超えるレコードを持ち、もう1つはほぼ5000万を持ち、毎日成長しています。
このテーブルはファクトテーブルですか、それともディメンションテーブルですか。1つは両方として機能できますか?もしそうなら、それは大きなパフォーマンスの問題になるのでしょうか?ファクトよりもディメンションから多くのクエリを実行するのが一般的ですか?個人テーブルをディメンションとして使用するDIFFERENTファクトテーブルが実際には60,000レコード(はるかに小さい)しかない場合はどうなりますか。
私の問題は、私たちのデータとその使用が、スタースキーマの一般的に使用される例に適合しないことだと思います。
明確化: いくつかの良い考えが以下に追加されていますが、おそらく私はあまりにも多くを省略して、本当にうまく説明することができませんでした。ここにいくつかのより多くの情報があります:
有権者データベースを取り扱っています。さまざまなグループによる投票者数以外の測定値はありません。党別、年齢別、場所別の投票者数。投票者は、投票の種類と選挙、投票のステータスと選挙などによってカウントされます。「投票履歴」ログと活動監査ログ(住所、政党などの変更)があります。どの有権者が選挙労働者であるかに関する情報と、それに関連するすべての情報があります。後で周辺機器にたどり着くと思います。
今のところ、私は2つの主要な「ビジネスプロセス」に焦点を当てています。それは、投票者登録(投票者です)と投票率です。第一に、有権者は事実です。第二に、有権者は、党、選挙、投票用紙の種類とともに、次元です。(そして誰かが心配している場合に備えて-いいえ、私たちは人々がどのように投票するかわかりません。彼らが投票するだけです。LOL)
それが少し明確になることを願っています。
sql-server - MDXパフォーマンスとT-SQL
6億を超えるレコードを含むテーブルと、データベースで複雑な検索操作を行う一連のストアドプロシージャを含むデータベースがあります。テーブルに適切なインデックスがある場合でも、ストアドプロシージャのパフォーマンスは非常に遅くなります。データベースの設計は、通常のリレーショナルデータベースの設計です。データベース設計を多次元に変更し、従来のT-SQLクエリの代わりにMDXクエリを使用したいのですが、問題は 、パフォーマンスに関して、MDXクエリが従来のT-SQLクエリよりも優れているかどうかです。はいの場合、クエリのパフォーマンスはどの程度向上しますか?
助けてくれてありがとう。
sql - SSAS-カスタム合計
合計がファクトの属性から取得され、SSAS 2005の子の集計として計算されないキューブを作成しようとしています。たとえば、
特定の日に100人の顧客が訪れた10の店舗があるとします。ただし、一部の顧客が複数の店舗を訪れた場合、いくつかの重複がありました。したがって、すべての店舗が属する地域の総訪問者数は、ファクトデータで提供される手動の数値です。
などなど
おそらく計算されたメジャーを使用して、子からメジャーを合計するのではなく、属性を合計として返すようにキューブを設計するにはどうすればよいですか?
どんなアイデアも楽しみにしています。
乾杯
sql - データウェアハウスの重複ディメンション行
イベントログからのデータをデータウェアハウスにロードし始めています。ファクトテーブルの行が1つのイベントを表す通常のスタースキーマがあります。ディメンションテーブルは、user_agent、ip、referal、pageなどの一般的な組み合わせです。1つのディメンションテーブルは次のようになります。
IDを自動生成して、最終的にファクトテーブルに対して結合する場所。私の質問は、バルクロードプロセスで重複レコードを識別するための最良の方法は何ですか?永続ストアに実際に挿入する前に、ログファイルのすべてのレコードを一時テーブルにアップロードしますが、IDは自動インクリメントされるだけなので、2日間の2つの同一のdimレコードのIDは異なります。値の列のハッシュを作成して、それを比較しようとするのは適切でしょうか?各値の列を比較しようとすると時間がかかるようです。このような状況のベストプラクティスはありますか?