投稿

1月, 2026の投稿を表示しています

【Mac編】手元のMacにMySQLを導入!学習用のデータベース環境をサクッと構築する

 データベースの学習を進める上で、世界中で広く使われている MySQL を避けては通れません。今回は、手元のMacにMySQLをインストールし、いつでもSQLの練習や検証ができる「マイ・ラボ」を構築した記録をまとめます。 1. インストーラーの入手 まずは公式サイトのアーカイブから、自分のMacのOSバージョンに合ったインストーラーをダウンロードします。 入手先: MySQL Community Server (Archives) 最新版も良いですが、実務での普及率や安定性を考えてバージョンを選ぶのも、エンジニアらしい「こだわり」の第一歩です。 2. インストール作業 ダウンロードした .dmg ファイルを開き、インストーラーの指示に従って進めます。 途中で Rootパスワード の設定を求められます。これはデータベースの全権限を持つ重要なパスワードなので、忘れないようにしっかり管理します。インストールが完了すると、Macの「システム設定(システム環境設定)」の一番下に MySQL のアイコンが出現します。 ここから、ボタン一つでMySQLの「起動」と「停止」が切り替えられるようになります。 3. ターミナルから操作するための設定(PATHを通す) インストールしただけでは、ターミナルで mysql と打っても「コマンドが見つかりません」と言われてしまいます。どこからでもMySQLを呼び出せるように PATH(パス) を通します。 使用しているシェル(zshなど)の構成ファイル( ~/.zshrc など)に、以下のパスを追記します。 Bash # MySQLの実行ファイルがある場所を指定 export PATH= $PATH :/usr/ local /mysql/bin 設定を反映( source ~/.zshrc )させれば、準備完了です! 4. ログイン確認:いざ、データベースの世界へ ターミナルを立ち上げ、以下のコマンドでログインを試みます。 Bash mysql -u root -p 設定したパスワードを入力し、 mysql> というプロンプトが表示されれば成功です! 5. まとめとこれからの学習 MacにMySQLが入ったことで、いつでも気軽にテーブル設計の練習や、複雑なクエリの実験ができるようになりました。

【Ubuntu編】PostgreSQL 16導入と複数クラスタ起動:OSによる「管理のしやすさ」を実感

 これまではMacやRHEL(Red Hat Enterprise Linux)系でデータベースを触ってきましたが、今回はUbuntu 22.04 LTS環境を使ってPostgreSQL 16を導入しました。 実際に触ってみて感じたのは、**「Ubuntuはコマンド体系やファイル管理が非常にシンプルで扱いやすい」**ということです。今回はその導入手順と、実務で役立つ「複数クラスタの同時起動」の実験記録をまとめます。 1. なぜUbuntuを選んだのか? 実務では堅牢なRHEL系が選ばれることも多いですが、学習用としてUbuntuを使ってみて、その「シンプルさ」に驚きました。 パッケージ管理が直感的 : apt コマンドの依存関係解決がスムーズ。 設定ファイルの配置が明快 : /etc/postgresql/16/main/ のように、バージョンごとに整理された構造が分かりやすい。 情報の豊富さ : 世界中のエンジニアが使っているため、困った時の解決策がすぐに見つかる。 こうした「管理のしやすさ」は、試行錯誤を繰り返す学習フェーズでは大きなメリットだと感じています。 2. PostgreSQL 16のインストール手順 Ubuntu標準のリポジトリではなく、最新のマイナーバージョンを確実に追えるよう公式リポジトリを利用します。 (1) リポジトリの作成と鍵の登録 Bash # 公式リポジトリの追加 sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list' # 署名鍵の登録 wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add - # リストの更新 sudo apt-get update (2) インストール Bash sudo apt -y install postgresql-16 インストール後、管理用のOSユーザー postgres にパスワードを設定しておきました。 sudo passw...

【DB設計】見習いエンジニアが現場で学んだ「後悔しない」ための設計原則まとめ

データベースエンジニアの見習いとして現場に入り、先輩方の設計やトラブル対応を間近で見ていると、**「最初の設計の良し悪しが、数年後の開発効率やシステム移行(モダナイズ)の成否を決定づける」**ということを痛感します。 今回は、私が実務と学習を通じて学んだ、将来の自分(とチーム)を助けるための設計のコツを整理してまとめます。 1. NULLは「なるべく避ける」が鉄則 設計の初期段階で最も意識しているのが、「安易にNULLを許可しない」ことです。 プログラムを複雑にしない : アプリ側で値を取り出す際、常に「もしNULLだったら」というチェックが必要になり、バグの温床になります。 集計ミスを防ぐ : SQLの集計関数( COUNT や AVG など)ではNULLが無視されるため、直感に反する計算結果を生むことがあります。 【現場での学び】 可能な限り NOT NULL 制約をつけ、未入力が想定される場合は「デフォルト値」を設定する。制約によってデータの品質をDBの入り口で担保する重要性を実感しています。 2. データベースの「制約」を最大限に活用する データの正しさを守るのはプログラムだけではありません。DB自体が持つガード機能を信頼することが大切です。 主キー(Primary Key) : データの重複を物理的に許さない。 一意制約(Unique) : 重複を避けるべき項目(メールアドレスなど)を守る。 チェック制約(Check) : 「0以上の数値しか認めない」など、値の妥当性をDBレベルで保証する。 アプリ側だけでなく、DB側で「守りの設計」を固めることで、直接データを操作した際のリスクも最小限に抑えられます。 3. 「有意コード」の誘惑に負けない 「商品コードの先頭2桁がカテゴリを表す」といった、値自体に意味を持たせた「有意コード」は、一見便利ですが避けるべきだと学びました。 仕様変更に弱い : カテゴリ体系が変わった瞬間、全てのコードを書き換える地獄が発生します。 無意コード(サロゲートキー)の推奨 : 意味を持たない連番などを主キーにし、属性(カテゴリなど)は別カラムで管理するほうが、将来の拡張やモダナイズに強い設計になります。 4. 「物理削除」ではなく「論理削除」を検討する データを消す際、 DELETE で消し去る(物理削除)のか、フラグで非表示に...

【バックエンド構築】CentOS 9からOracle 11gへ接続!Instant Clientの導入と実験

  システムを構築する際、データベースサーバー本体を立てるだけでなく、「別のアプリケーションサーバーからDBに接続する」という構成はバックエンド開発において日常茶飯事です。 現在取り組んでいるモダナイズ(近代化)の学習でも、新旧サーバー間での接続確認が欠かせません。今回は、CentOS 9環境にOracle Instant Clientを導入し、リモートのOracle 11gへ接続するための実験記録をまとめます。 1. 接続環境の準備:Instant Clientのダウンロード まずは接続元となるCentOS 9に、軽量なクライアントパッケージである「Instant Client」を導入します。 接続先のバージョンに合わせ、以下の2つのRPMファイルを公式サイトから入手しました。 Basicパッケージ : 接続に最低限必要なライブラリ群 SQL*Plusパッケージ : コマンドラインからSQLを実行するためのツール ダウンロード元: Oracle Instant Client for Linux x86-64   2. 依存ライブラリのインストール CentOS 9(Stream 9など)の標準状態では、Oracleクライアントが動作するために必要な古いライブラリが不足していることがあります。これがないと実行時にエラーが出るため、あらかじめ導入しておきます。 Bash sudo dnf install -y libaio libnsl 3. クライアントのインストール ダウンロードしたRPMファイルを、 sudo を使ってインストールします。 Bash sudo rpm -ivh ./oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm sudo rpm -ivh ./oracle-instantclient11.2-sqlplus-11.2.0.4.0-1.x86_64.rpm インストール先を確認すると、以下のディレクトリに配置されていました。 /usr/lib/oracle/11.2/client64 4. 環境変数の設定(ここが重要!) インストールしただけでは sqlplus コマンドは使えません。OSにライブラリの位置を教えるための設定が必要です。 私は .bash_profil...

【Mac編】インストーラーで手軽に構築!PostgreSQL 17の学習環境を整える

前回の記事では、日本企業の現場を意識して「RHEL(Red Hat)にOracle 11gを導入する方法」を解説しました。 実務ではサーバーOSでの構築スキルが求められますが、**「まずは手元のMacで手軽にSQLの練習をしたい」「最新のPostgreSQL 17に触れてみたい」**という場面も多いはずです。今回は、Homebrewを使わず、GUIのインストーラーを用いてMacにPostgreSQL 17を導入する手順をまとめます。 1. インストーラーの準備 PostgreSQLは多くの導入方法がありますが、設定をダイアログ形式で行える「Interactive Installer」が最も確実です。 (1) ダウンロード 公式サイトのダウンロードページへアクセスし、macOS用を選択します。 PostgreSQL公式:macOSダウンロード 今回は最新バージョンである postgresql-17.5-1-osx.dmg を使用しました。 2. インストールと初期設定のポイント ダウンロードしたdmgファイルを実行すると、セットアップウィザードが起動します。基本的には「次へ」で進めて問題ありませんが、以下の2点だけ注意して設定しました。 スーパーユーザー(postgres)のパスワード : データベース管理に必須となるため、忘れないように設定します。 ロケール(Locale)の設定 : 日本語環境で正しく動作させるため、デフォルトではなく [ja_JP.UTF8] を選択しました。 Stack Builderについて インストール完了直前に「Stack Builder(追加ツールのインストール)」を実行するか聞かれますが、今回は本体の学習が目的のため、キャンセルして終了しました。 3. SQL Shell (psql) による動作確認 まずは、インストールと一緒に導入された専用ツールで接続を確認します。 Finder から [アプリケーション] > [PostgreSQL 17] > [SQL Shell (psql)] を起動します。 Server、Database、Portなどはすべてデフォルト(Enterキー)で進めます。 設定したパスワードを入力し、 postgres=# というプロンプトが表示されれば成功です。 4. ターミナルから操作できるように...

【RHEL環境】日本企業で主流のRed HatにOracle Database Express Editionを導入する:モダナイズへの第一歩

 日本のエンタープライズ領域において、サーバーOSとして圧倒的なシェアを誇るのが Red Hat Enterprise Linux (RHEL) です。 将来、データベースの専門家として現場で活躍するためには、RHEL環境でのOracle構築スキルは避けて通れません。今回は、あえて旧バージョンである「Oracle Database 11g Express Edition (XE)」をRHELに導入した記録をまとめます。 1. なぜ今、あえてOracle 11gをRHELで学習するのか? 現在、多くの日本企業では、長年稼働し続けて保守期限が切れた Oracle 11g が、システムの「塩漬け」状態で残っています。 これらのレガシーシステムを最新環境へ移行(モダナイズ)するためには、まず現状の11gがどのような仕様で動いているのかを正確に把握しなければなりません。本番環境を想定した再現と、将来のPostgreSQL等への移行シミュレーションを見据え、今回は Oracle 11gの学習のために この環境を構築します。 ※注意点 今回使用する「Express Edition (XE)」は、あくまで学習・開発用のエディションです。 本番環境での利用は想定されておらず、商用ライセンス版とは制限事項が異なる 点に十分注意してください。 2. 事前チェック:Swap領域の確保 Oracle Databaseは、物理メモリが十分であっても、一定の**Swap領域(仮想メモリ)**が割り当てられていることをインストールの前提条件としています。RHELでの環境構築において、ここで躓くケースが非常に多いため、必ず最初に確認しましょう。 (1) 現在のSwap領域を確認する方法 まず、現在のシステムでSwapがどの程度割り当てられているかを確認します。 Bash # メモリとSwapの使用状況を表示 free -m ここで Swap の total が 2048MB(2GB)以上あれば、Oracle XEの導入には十分です。もし「0」であったり、数百MBしかない場合は、以下の手順で増設が必要です。 (2) Swap領域が不足する場合の増加方法 パーティションを切り直すのはリスクがありますが、RHELでは「スワップファイル」を作成することで、動的に領域を増やすことが可能で...