MyBatisで自己参照による階層データの取得

MyBatisを用いて、単一テーブル内の親子関係を持つ階層データ(自己参照)を効率的に取得する方法を解説します。例として、ニュースカテゴリのツリー構造(親カテゴリ → 子カテゴリ)を扱います。 テーブル構造は以下の通りです: CREATE TABLE newslabel ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(100) NOT NULL, pid INT DEFAULT 0 COMMENT '親カテゴリI ...

7月27日 21:24 投稿

Oracle DatabaseにおけるVARCHAR2型の4000バイト制限と文字列長セマンティクスの詳細

Oracle DatabaseのVARCHAR2データ型は可変長文字列を扱うための基本的な型ですが、その定義と挙動には「バイト単位」と「文字単位」という2つの異なる長さセマンティクスが存在します。公式ドキュメントによると、VARCHAR2列を作成する際には最大長をバイトまたは文字数で指定しますが、データ型としての物理的な上限は常に4000バイトです。例えば、VARCHAR2(4000 CHAR)と ...

7月26日 16:28 投稿

正規表現を用いたデータ検索の高度な活用法

正規表現によるパターンマッチングの基礎 正規表現(Regular Expression)は、テキスト内の特定のパターンを抽出・検索するための強力なツールです。たとえば、電話番号の抽出、ファイル名に数字を含むものを探す、文章中の繰り返し単語を検出するといった処理に利用できます。 基本的な文字列マッチング 以下のSQLクエリでは、prod_name列に「luzhaoshan」という文字列を ...

7月23日 19:37 投稿

SQLite完全ガイド:基本から応用まで詳しく解説

多くのアプリケーションでは、重いデータベースシステムは必要ありません。SQLiteは軽量でありながら高性能なデータベースエンジンとして、ほとんどの用途に対応できます。 SQLiteはC言語で書かれたオープンソースの軽量で高速、独立した高信頼性SQLデータベースエンジンです。スマートフォンやコンピュータのほぼすべてのプラットフォームで動作し、多くのアプリケーショ ...

7月22日 19:54 投稿

MySQLの詳細な学習ノート

Windowsサービス操作 MySQLサービスの起動: net start mysql Windowsサービスの作成: sc create mysql binPath= パス (等号と値の間にスペースが必要) 接続と切断 接続コマンド: mysql -h アドレス -P ポート -u ユーザー -p パスワード 実行中のスレッド確認: SHOW PROCESSLIST; システム変数確認: SHOW VARIABLES; データベース操作 現在のデータベース確認: SELECT ...

7月21日 16:14 投稿

MySQLストアドプロシージャでのカーソルを利用した結果セットのループ処理

MySQLのバージョンによって、ストアドプロシージャやカーソルの構文が微妙に異なる場合があるため、実装時は対象バージョンの公式リファレンスを確認することが重要である。クエリ結果の各行に対して順次処理を行う場合、カーソル(CURSOR)を利用して結果セットをループで処理する。基本の手順は以下の通りである:ループ内で使用する変数の宣言カーソルの宣言データ終了 ...

7月20日 16:01 投稿

PostgreSQLとPostGISを活用したMapbox Vector Tiles (MVT) の動的生成手法

ベクトルタイル(MVT)アーキテクチャの概要 Mapbox Vector Tiles (MVT) は、地理空間データを効率的に配信するためのフォーマットであり、従来のラスター画像とは異なり、クライアント側での動的なスタイリングや高解像度でのレンダリングを可能にします。PostgreSQLとPostGISの拡張機能を利用することで、静的なファイルを作成することなく、データベース上のデータを ...

7月19日 20:37 投稿

PythonによるSQL構文解析と実行プラン評価を活用したクエリチューニング

データベースパフォーマンス改善の基盤 企業規模のシステム開発において、データベースのレスポンス遅延やCPU/メモリリソースの逼迫は、大半が非効率なSQLクエリに起因します。複雑な結合や動的なフィルタリングを含む問い合わせを最適化するには、構文レベルの理解とストレージエンジンが実際に取る処理フロー(実行プラン)の可視化が不可欠です。本稿では、Pythonスクリ ...

7月18日 18:38 投稿

Oracleデータベースの制約状態と設計ベストプラクティス

Oracleデータベースにおける制約(Constraint)には、いくつかの状態設定項目があり、これらが混同されがちです。主な項目は以下の通りです: ENABLE/DISABLE - 制約の有効/無効状態 VALIDATE/INVALIDATE - 既存データの検証状態 DEFERRABLE/NOT DEFERRABLE - 制約チェックの遅延可否 これらの状態設定の違いを明確にするために、具体的な実験を通じて確認してみましょう ...

7月18日 01:11 投稿

TCC分散トランザクションの実践:高スループット環境でのデータ整合性確保

1. 分散トランザクションの課題 モノリシックアーキテクチャ時代では、ACID特性によりデータベースのトランザクションを容易に管理できました。しかしマイクロサービス化が進む現代では、複数のサービス・データソース(MySQL、Redis、メッセージキューなど)にまたがる処理が必須となり、従来のローカルトランザクションでは対応不可です。 代表的な分散トランザクション ...

7月17日 20:19 投稿