Bigqueryの統計情報のクエリプランへの影響の検証
※下記のGithubでも公開しています。gitの方が見易い人はこちらを参照してください。 ##概要 DWH系のDBにはクエリプランはパーティションやクラスターキーによってのみ決まる製品もある。一方、多くのRDBはオプティ […]
Bigquery 性能検証
※下記のGithubでも公開しています。gitの方が見易い人はこちらを参照してください。 ##概要 基本的な機能(パーティション&クラスタリングの効果)に加え、パーティション指定なし&クラスターキー指定なしでの高速化等A […]
掲示板WEBサイトの投稿分析機能
※下記のGithubでも公開しています。gitの方が見易い人はこちらを参照してください。 ##機能概要 掲示板系WEBサイトにはすばらしい情報があるが、スパムやテーマとは無関係の投稿も存在し利用には時間コストを要する。 […]
Bigqueryテストデータ生成 - 1億件を10秒で! -
※ 下記のgithubでも同様の内容を公開しています。gitの方が見易い方は下記を参照してください。 ##機能概要 Bigqueryは大量データを処理するが性能検証用にテストデータを作成するのは大変である。そこで、Big […]
データアクセスパスのパターン化
デザインパターンというものがある。classをデザインするときのパターンを汎化してまとめたものである。多くのデザインがこのパターンのどれかに近いもので実現できる。 データアクセスパスも同じようにパターンを型として理解して […]
※作成中※ ETLの並列処理(概要)
ETLは並列化することで高速化できる。しかし、並列化には多くのパターンがあり適切に選択しなれば効果が得られない。並列化のパターンとそのメリット、デメリットを記載する。
ETLのウィークポイント(システム移行)
ETLはソフトウェアのバージョンアップ、ハードウェアのリソース不足、老朽化等でシステム移行が必要となる。ETLは非常に多くのシステムと接続するためこのシステム移行には労力とリスクを伴う。 特に、ETLが全社的に活用され接 […]
ETLのウィークポイント(修正とテスト)
ETLは生産性が高いと言われるが必ずしもそうではない。スクラッチ開発よりも弱い部分がある。率直に言うと、ETLは新規のアプリ作成は生産性が高い。一方、以下の特性から修正には弱い。 下記にウィークポイントの詳細と対策を記載 […]
ETLのサイジング:ストレージ
ETLサーバーの内部ストレージは以下のような用途で使われる。 多くの場合はシーケンシャルIOであるが、上記2はランダムIOである。下記にシーケンシャルIO、ランダムIO、それぞれのサイジングの考え方を記載しているので参照 […]
ETLのサイジング:メモリ
ETLのメモリはDBのように、アクセス頻度の高いデータをメモリに載せてディスクアクセスの頻度を削減するような使い方はしない。 ソート、ソートJOIN、Group by、ランキング処理等のレコード間の関連を見なければならな […]
ETLのサイジング:CPU
ETLのCPUをサイジングするときの基本的な考え方を記載する。いろいろなサイジング方法があるが私が使っているものである。常に実測してみて見積るのでは作業コストが膨らんでしまう。また、実測はテストデータの特性やキャッシュの […]
WordPressにリバースプロキシサーバー経由で接続するときの問題
WordPressの前にリバースプロキシを配置すると以下のようなエラーが発生する場合がある。 解決するのに苦労したので原理から解決策を記載する。他のサイトでも部分的には説明されているが、体系的に理解できるものが見つからな […]
サイジング:HDD vs SSD
最近はほとんどのケースでSSDでストレージを構成する。HDDとSSDではシーケンシャルIOの特性に違いがあり、SSDをHDDの場合と同じように考えてサイジングすると想定外の性能問題になる可能性がある。本記事は両者のシーケ […]
サイジング:ストレージ
クラウドでサーバーのディスクストレージを選択する時、どのように選択するべきか基準がわからない人が多いのではないだろうか。データ基盤のボトルネックの多くはストレージのIOで発生する。ストレージのIOの仕組みを理解し、適切に […]
データストア(データベース)の選び方
時代の流れとともにニーズが変化しデータソースの機能も進化してきた。しかし、いろいろなタイプのデータベースが存在するのはなぜだろうか。理由はデータの整合性、同時書き込み、大量データの処理、大量のトランザクションのどれかを強 […]
Tech Blogのコンセプト
Tech Blogでは中級者以上の技術者向けにデータエンジニアの領域についての情報を提供する。25年以上、SIerの技術者として現場で手を動かしてきた(About参照)。そのアドバンテージを活かし、付加価値の高いコンテン […]
データ連携基盤のサイジングの考え方
データ連携基盤をサイジングするときのポイントをまとめる。 超概要 1.目標設定最も重たいかつ重要な処理について目標の処理時間を設定する。 2.ボトルネックの特定 重要な処理がIOボトルネックかCPUボトルネックか評価する […]
データ連携基盤の基本アーキテクチャー(クラスタ構成)
可用性と性能を考慮したデータ連携基盤のアーキテクチャを記載する。 要件が単純な場合は、”ソースシステム→ETL→ターゲット”がそれぞれ単体で存在するようなシンプルな構成となる。しかし、データ連携基盤の活用が進み停止が許さ […]
DB実行計画の”コスト”の考え方を理解する
データベースの実行計画のマニュアルや解説で下記の図のようなコストという概念が出て来る。私はデータベースの実行計画を勉強し始めたころ、このコストの概念が理解できずにもやもやして理解が進まなった。直観的には”コスト=処理時間 […]
CPU、ストレージ、NWの処理時間を”体系的”に理解する
システムの処理時間はCPU、ストレージ、ネットワークの処理時間の合計である。それぞれの処理時間の規模感が理解できるとパフォーマンスチューニングでどこがボトルネックか判断できるようになる。 例えば、DBからのレスポンスタイ […]
データ基盤の構成要素
データ基盤を構成する要素を記載する。他のサイトにも存在する情報ではあるがデータ仮想化も含めたフルセットがシンプルに整理されたものが見つからなかったので簡単に記載しておくことにした。 データ加工機能 データ保管機能 集計/ […]
システム設計で待ち行列理論を活用する
待ち行列という理論があり、IPAの情報処理試験にも登場する。実務での活用が難しい理論だと思う。本質を理解して活用できるように体系化する。 概要 システムでの待ち行列は、以下の4つを考える。 例えばCPUとロックだと下記の […]
データ基盤(連携基盤+分析基盤)の進化
データ基盤にはいろいろな種類がある。その結果、データ基盤のイメージは人によって様々である。時代の流れとともにデータ量が増え、ニーズも変わりデータ基盤の構成も進化した。 ニーズの変化と対応するデータ基盤の進化の関係を理解す […]