Scraps 最終更新 2026/10/01 18:20

#データベース

@Yuzuki-ki /

UUIDとは?「ただのランダムな文字列」だと思っていたUUIDをまとめてみる

  • UUIDのバージョンは特に理由がなければv4、DBの主キーに使うなら順序性のあるv7を検討するのがおすすめ
  • v4はランダム生成でインデックス効率が悪いがv7はタイムスタンプを含み順序性がある
  • v4はインデックス断片化のリスクがあるため、大量データ処理時はv7の採用を検討すべき

@sasaki_s_sci /

エムハブの技術的思想とJSONSchemaful Database

  • エムハブは製造業向けのソフトウェアプラットフォームで、jsdbはJSONSchemaを活用したデータベースとして設計されている
  • 責任分離による再利用性と、JSONSchemaのメタスキーマをコードに固定する仕組み、エンドポイント単位の認可管理
  • jsdbは運用中にスキーマが変更可能なデータベースで、開発ではなく運用の操作として扱える

@塚本 /

データマート導入でDBパフォーマンスの手綱を握る

  • BigQueryのビューでJOINした際のパーティションプルーニング不具合をデータマート導入で解決
  • ビューのJOINでパーティションプルーニングが効かない、データマートで事前結合した実テーブルを用意
  • ビュー経由のJOINはパーティションプルーニングが効かず、データマートで事前結合することでスキャン量を170分の1に削減

@nolanlover0527 /

SQL構文は日本語で例えると理解しやすい

  • SQL構文を日本語の文順に変換して理解する方法が説明されている
  • SELECTは「何を」、FROMは「どこから」、WHEREは「〜という条件で」、GROUP BYは「〜ごとにまとめて」、HAVINGは「まとめた後でさらに条件を絞る」、ORDER BYは「〜順に並べて」、LIMITは「〜件だけ」と比喩されている
  • WHEREとHAVINGの使い分けや、書く順序と実行順序の違いに注意する必要がある

@虎の穴ラボ技術ブログ /

書評「SQLアンチパターン 第2版」

  • SQLアンチパターン第2版はデータベース設計の失敗パターンを解説し、実務で使える設計手法を提示している
  • キーレスエントリ、EAV、ポリモーフィック関連の3つのアンチパターンと、クラステーブル継承、STIなどの解決策が紹介されている
  • 外部キーの使い方やEAVの代替案を検討する際には、それぞれのメリット/デメリットを考慮する必要がある

@arimo /

PostgreSQL歴1年の人間がSnowflake研修で驚いた4つの違い

  • PostgreSQLとSnowflakeの構成・構文・権限・保管の4つの違いを解説
  • 仮想ウェアハウスとストレージの分離、ファイルのオブジェクト管理、VARIANT型の半構造化データ対応、Zero-Copy CloningとTime Travel機能
  • Snowflakeではスキーマ指定やロール階層の理解が必須で、PostgreSQLの延長線上では正しく操作できない

@ReQ_HY /

dbt + DuckDB で学ぶ Spotify 式 Context Layer - 正確なKPI集計と自由なデータ探索を両立する Text-to-SQL 設計論

  • SpotifyのVedder設計思想を参考に、DuckDB + dbt-duckdb + Gemini 3.7 Flashで4つの検証パターンを比較した
  • Context LayerとSemantic Layerの違い、Ratioメトリクスの確定SQL生成、AI Routerによる自動ルーティングが主な実装
  • 定型KPIはSemantic Layerで非定型探索はContext Layerに自動分岐する仕組みをローカル環境で実装可能

@もりた /

デカルト積問題って知っとるか〜? 気軽にJOINでメモリ爆発するアレのヤバさ実測すぞ!

  • JOINクエリでデカルト積が発生するとメモリ使用量が急激に増加する
  • 連鎖クエリは10万レコードで128MB、デカルト積クエリは64万レコードで156MBのメモリ使用量を記録した
  • エンティティ数が増えるとオブジェクト展開時のメモリ使用量が増加するため、1レコードあたりのデータ量に注意が必要

@けびん /

dbt と Snowflake と tag

  • dbtとSnowflakeで利用する3種類のタグが紹介されている
  • dbt tag、Snowflake Query Tag、Snowflake Object Tagの3種類があり、それぞれの設定方法と利用目的が記載されている
  • Query Tagはセッションレベルで設定され、Object TagはオブジェクトにKey-Valueを付与してコスト管理や権限管理に利用できる

@Hiroto Ryushima /

メモリに載らないGROUP BYをDuckDBはどう処理するのか

  • DuckDBはメモリに載らないGROUP BYを外部ハッシュ集約で処理し、メモリとディスクを交互に使う
  • 外部ハッシュ集約ではデータを分割してディスクに書き出し、その後読み戻して集計する。hash tableとALLOCATORのメモリ使用量を監視できる
  • memory_limitを250MB以下にするとOut of Memoryエラーが発生する可能性があり、スレッド数に応じた余裕を持った設定が必要

@mo__mo /

Oracle Base Database Service(BaseDB)のEasy Createを試す

  • Oracle Base Database ServiceにEasy Create機能が追加され、標準構成でDBシステムを迅速に作成できる
  • Easy CreateではDB名、エディション、パスワード、VCNなど主な項目を入力し、シェイプやストレージは標準構成が適用される。通常作成ではより多くの設定項目が選べる
  • Easy Createは開発や検証で標準構成のDBを速く作るのに適し、詳細な設計が必要な場合は通常作成を使うべき

@Taste of Tech Topics /

S3 Vectors で見落としがちなクォータとコストのかかり方

  • S3 VectorsでBedrock Knowledge Baseを使うとメタデータが1KB/35キーに制限される
  • Bedrock Knowledge Base経由ではカスタムメタデータ1KB、メタデータキー35個が上限、S3 Vectors単体では40KB/50キー
  • RAG構築時にメタデータ設計を事前に厳密に行い、キー数とサイズを制限する必要がある

@azuki /

【Supabase】複数同時開発のマイグレーション競合を自動修復するスクリプト

  • Supabaseのマイグレーション競合を自動修復するスクリプトが公開された
  • ローカルとリモートのマイグレーション比較、履歴から削除処理、冪等なマイグレーション前提
  • マイグレーションを冪等に書く必要があり、CI/CDに統合してDevelop DBへの並列アクセスを制御している

@noritama73 /

DBが無応答になったとき、Goのアプリケーションはどこで詰まるのか

  • GoアプリケーションはDB無応答時にコネクションプールやセマフォで処理が詰まる
  • readTimeoutを設定することでクエリのI/Oタイムアウトを制御、contextのdeadlineで処理全体の制限をかける
  • readTimeoutを設定しないとエラーも出ず処理が永遠に止まるため、DSNに明示的にタイムアウトを追加する必要がある

@ABAB↑↓BA /

代数的エフェクト指向 Flix は、次世代 ORM の夢を見るか

  • Flixで書かれたDBライブラリsqlfxは、クエリの型シグネチャに読み取りと書き込みのエフェクトを明示する
  • \ DbReadと\ DbWriteで関数の副作用を型に記述し、生SQLを直接書く代わりにDSLで動的条件を組む
  • 関数の型シグネチャにエフェクトを記述することで、DBアクセスの副作用を明確に保証できるが、実際の開発で有用性は検証が必要

@natsugure /

Vercel × Neon Preview Branching でPRごとのプレビュー環境を作る

  • VercelとNeonの統合でPRごとのプレビュー環境を構築する方法が説明されている
  • Preview Branchingを有効化し、Build Commandにマイグレーションを組み込み、直結エンドポイントでマイグレーションを流す
  • マイグレーションはプール接続ではなく直結エンドポイントで行い、seedをビルドから外すことでプレビュー環境の安定性を確保する