データベースのバッチ挿入は本当にこれだけの工夫が必要なのか?

最近のプロジェクトで様々なinsertBatchのコードを書いてきましたが、いつも「バッチ挿入はループ挿入よりずっと効率的だ」と言われます。そこで今回は、本当にそうなのかを検証してみましょう。 テスト環境: SpringBoot 2.5 Mysql 8 JDK 8 Docker まず、複数データの挿入には以下の選択肢があります: foreachループによる挿入 SQLを結合して一度に実行 バッチ処理機 ...

7月7日 16:00 投稿

Dockerを活用したアプリケーションコンテナ化の実践手法

Docker環境の構築 CentOSベースのシステムにDockerをインストールする際の手順です。パッケージリポジトリを最適化し、高速なミラーを利用する設定を行います。 # 必要な依存パッケージをインストール sudo yum install -y yum-utils device-mapper-persistent-data lvm2 # 公式リポジトリの追加(東京リージョン向けミラー) sudo yum-config-manager --add-repo https:/ ...

7月7日 02:01 投稿

Dockerコンテナ運用ガイド

Docker環境のセットアップ 1.1 システムツールのインストール yum install -y yum-utils device-mapper-persistent-data lvm2 1.2 リポジトリの追加 yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo 1.3 キャッシュの更新 dnf makecache 1.4 Docker CEのインストール yum -y install docker-ce docker-ce-cli containerd. ...

7月6日 23:29 投稿

PHPとJPushを用いたカスタマイズ可能なプッシュ通知システムの構築

本稿では、外部ライブラリに依存せず、純粋なPHPとcronによるスケジュール実行で実装されたプッシュ通知基盤について解説します。極光推送(JPush)APIを直接呼び出し、ユーザー属性(性別・地域・端末種別)に基づくセグメント配信を可能にする設計を採用しています。 認証付きJPush送信関数 以下の関数は、AppKeyとMaster Secretを用いてBasic認証を行い、JSONペイロー ...

7月6日 21:50 投稿

MySQLのフロー制御:条件分岐とIFステートメントの実装方法

MySQLにおける制御フローの基礎 一般的なプログラミング言語と同様に、SQLの実行フローは以下の3つに大別されます。 順次構造:上から下へ順番に実行される 分岐構造:条件に合致した処理を選択して実行する 反復構造:特定の条件を満たす間、処理を繰り返す MySQLでこれらの制御フローを実現するステートメントは、ストアドプロシージャ、ストアドファンクション、トリ ...

7月6日 19:47 投稿

Leaf分散ID生成システム

要件定義 分散システムにおいてデータやメッセージの一意識別は重要課題である。特にテーブルシャーディング環境では、データベースの自動採番機能では要件を満たせない。ID生成システムに求められる要件は以下の通り: グローバル一意性: 重複IDの発生を排除 単調増加傾向: インデックス構造を持つRDBMSの書き込み性能最適化 厳密な単調増加: トランザクションバージョン ...

7月6日 19:15 投稿

MySQL 単一テーブルクエリの基本操作

以下の例では、学生の成績を管理する grade テーブルを対象に、さまざまな SELECT クエリの使い方を紹介します。 テーブル定義とサンプルデータ CREATE TABLE grade ( id INT NOT NULL, sex CHAR(1), firstname VARCHAR(20) NOT NULL, lastname VARCHAR(20) NOT NULL, english FLOAT, math FLOAT, chinese FLOAT ); INSERT INTO grade VALUES (1, 'm', 'Jo ...

7月6日 01:12 投稿

MySQLデータベース操作の基礎

1. DDL(データ定義言語)の基本操作 データベースやテーブルの構造を定義・変更するためのコマンド -- データベースの作成 CREATE DATABASE school_system DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- データベース選択 USE school_system; -- テーブルの作成 CREATE TABLE learners ( student_id INT PRIMARY KEY NOT NULL, full_name V ...

7月6日 00:02 投稿

MySQLで読み書き分離パターンを選択する方法

読み書き分離パターンの選択 読み書き分離を実装する場合、適切なパターンを選択することが重要です。一般的に使用される読み書き分離パターンには、単純な読み書き分離とロードバランサーを活用した読み書き分離の2種類があります。データソースを動的に切り替えることで、これらのパターンを実装できます。以下では、Spring Bootベースの読み書き分離 구현と、さまざま ...

7月5日 23:00 投稿

Budibase表名文字コード問題の根本的解決策

低コードプラットフォームBudibaseを活用する際、表名に日本語や特殊文字を使用するとデータベースで不正な文字表示が発生する問題が頻繁に報告されています。PostgreSQLやMySQLなど複数のデータベースと連携する際に、表名の文字コード不一致が原因でクエリ失敗や関連付けエラーが発生するケースが確認されています。この問題の根本原因は、データベース接続設定に文字コ ...

7月4日 23:22 投稿