インフラ

PostgreSQL 基礎講座 #5 EXPLAIN の読み方 — 実行計画でクエリを診断する
読了 4分

PostgreSQL 基礎講座 #5 EXPLAIN の読み方 — 実行計画でクエリを診断する

クエリが遅い理由を推測ではなく実行計画で確かめる方法を固めます。EXPLAIN と EXPLAIN ANALYZE の違い(後者は実際に実行)、計画ツリーを内側から読む順序、Seq Scan・Index Scan・Index Only Scan・Bitmap Scan の意味、cost と actual time・rows の見積もりと実測の比較、見積もりが大きく外れたときの処方(ANALYZE)、そして BUFFERS で読み取り量を見る習慣まで扱います。

PostgreSQL 基礎講座 #4 インデックス基礎 — いつ効いて、いつ効かないのか
読了 4分

PostgreSQL 基礎講座 #4 インデックス基礎 — いつ効いて、いつ効かないのか

読み取りを速くする基本手段であるインデックスを、PostgreSQL 基準で固めます。B-tree インデックスが検索を変える構造、作ったのに使われない代表的な原因(先頭カラムの不一致、カラムへの関数適用、型の不一致、低い選択度)、書き込み性能とストレージというコスト、そして「遅いクエリの WHERE・JOIN・ORDER BY を見て作る」という実務の順序まで扱います。

PostgreSQL 基礎講座 #3 結合と集計 — 読み取りクエリの実務感覚
読了 4分

PostgreSQL 基礎講座 #3 結合と集計 — 読み取りクエリの実務感覚

読み取りクエリの実務の 8 割を占める結合と集計を固めます。INNER と LEFT 結合の選択基準と、LEFT 結合の結果を WHERE で絞って INNER にしてしまう古典的なミス、GROUP BY と HAVING の役割分担、集計と結合が混ざるときの重複集計の罠、サブクエリと結合の分かれ道、そしてグループごとの最新 1 件を取る PostgreSQL らしい方法(DISTINCT ON)まで扱います。

PostgreSQL 基礎講座 #2 データ型とテーブル設計 — 何として保存するか
読了 5分

PostgreSQL 基礎講座 #2 データ型とテーブル設計 — 何として保存するか

PostgreSQL 設計の半分はデータ型の選択です。文字列は text 1 つで足りる理由、お金の計算に numeric が必須の理由、時刻保存の標準である timestamptz と timestamp の罠、主キー戦略(bigint IDENTITY vs UUID、そして uuidv7)、NOT NULL・CHECK・外部キーでデータ整合性を DB 層で守る設計、enum と配列を使う場所まで扱います。

PostgreSQL 基礎講座 #1 PostgreSQL とは — 既定の DB になった理由、インストールと psql の最初の一歩
読了 4分

PostgreSQL 基礎講座 #1 PostgreSQL とは — 既定の DB になった理由、インストールと psql の最初の一歩

PostgreSQL が新規プロジェクトの既定データベースになった背景から始めます。標準準拠と豊富なデータ型、拡張エコシステム(pgvector・PostGIS)、寛容なライセンスという選ばれる理由、Docker でローカルに立てる最速のインストール、psql への接続とメタコマンド(\l、\dt、\d)の基本、最初のテーブルを作って入れて読む 1 サイクル、そして講座全体の地図まで扱います。

LLM のハルシネーション(幻覚)— 原因と実務での対策
読了 6分

LLM のハルシネーション(幻覚)— 原因と実務での対策

LLM がもっともらしい嘘を自信満々に生成するハルシネーションを整理します。次トークンの確率予測という動作原理から幻覚が必然的に生まれる理由、事実誤り・出典の捏造・コード API の幻覚といった類型、RAG と引用の強制、ツール利用、構造化出力の検証、評価パイプラインまで実務で幻覚を減らす手段、そして完全にはなくせない前提の上で人間のレビューポイントを設計する運用の視点まで扱います。

埋め込みとベクトル検索 — 意味で探す検索の仕組み
読了 6分

埋め込みとベクトル検索 — 意味で探す検索の仕組み

RAG とセマンティック検索の基盤である埋め込み(エンベディング)とベクトル検索を 1 本で整理します。テキストを数値ベクトルに変換する埋め込みの概念、コサイン類似度で意味の近さを測る原理、全件走査の kNN と近似検索 ANN のトレードオフ、pgvector・専用ベクトル DB・検索エンジン拡張からストレージを選ぶ基準、キーワードの完全一致に弱い埋め込みの限界とハイブリッド検索、モデル変更時の全再インデックスといった運用コストまで扱います。

トークンとコンテキストウィンドウ — LLM のコストと限界を決める単位
読了 6分

トークンとコンテキストウィンドウ — LLM のコストと限界を決める単位

LLM の料金表とスペック表に必ず登場するトークンとコンテキストウィンドウを 1 本で整理します。テキストがどうトークンに分割されるのか、日本語が英語よりトークンを多く消費する理由、入力と出力で単価が異なる料金構造と会話が長くなるほどコストが膨らむ仕組み、コンテキストウィンドウが実際に制限しているもの、長大なコンテキストの性能面の落とし穴、プロンプトキャッシュや履歴管理といった実務での対策まで扱います。

CDN が速度を上げる方法 — キャッシュヒットから動的コンテンツまで
読了 5分

CDN が速度を上げる方法 — キャッシュヒットから動的コンテンツまで

実務者の観点で CDN の動作を整理します。距離(RTT)を縮めるエッジの構造、キャッシュヒット率を決める Cache-Control とキャッシュキー、無効化とデプロイの戦略、キャッシュできない動的コンテンツまで CDN が助ける仕組み(TLS 終端・コネクション再利用)、そしてヒット率を削るよくある間違いを扱います。

NAT Gateway 料金の削減 — 時間単価ではなくデータ処理料金が本体です
読了 6分

NAT Gateway 料金の削減 — 時間単価ではなくデータ処理料金が本体です

NAT Gateway の請求書を分解し、削減の順序を整理します。時間あたり・データ処理・インターネット転送が重なる 3 層の課金構造、ダウンロードにも処理料金がかかる見落とし、無料のゲートウェイエンドポイントからインターフェイスエンドポイント、IPv6、NAT インスタンスまで続く迂回ルートごとの損益、トラフィックの主犯を見つける診断方法、マルチ AZ 配置のコスト構造まで扱います。

DynamoDB vs RDS — AWS データベースの選択基準
読了 6分

DynamoDB vs RDS — AWS データベースの選択基準

DynamoDB と RDS を分ける実務基準を整理します。キーバリューとリレーショナルというデータモデルの違い、リクエスト単位課金とインスタンス時間課金が分ける請求書の構造、アクセスパターンを先に設計する必要がある DynamoDB の制約、GSI が書き込みコストを倍数にする落とし穴、トラフィックパターンで分ける判断の手順と両方を併用する構成まで扱います。

Redis が速い理由 — メモリ、シングルスレッド、データ構造
読了 5分

Redis が速い理由 — メモリ、シングルスレッド、データ構造

Redis が毎秒数十万リクエストを処理する構造的な理由を整理します。ディスクのないメモリアクセス、ロックの要らないシングルスレッドのイベントループ、目的に合わせて実装されたデータ構造という三本の柱と、シングルスレッドの罠(遅いコマンド一つが全体を止める構造)、そして Redis が遅くなるケースまで扱います。