<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:blogChannel="http://backend.userland.com/blogChannelModule" >
  <channel>
  <title>noviceSystemEngineer</title>
  <link>https://novice.blog.shinobi.jp/</link>
  <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="https://novice.blog.shinobi.jp/RSS/" />
  <description></description>
  <lastBuildDate>Sun, 01 Feb 2026 02:53:59 GMT</lastBuildDate>
  <language>ja</language>
  <copyright>© Ninja Tools Inc.</copyright>
  <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" />

    <item>
    <title>DB設計</title>
    <description>
    <![CDATA[達人に学ぶDB設計　徹底指南書<br />
<br />
RDSについて整理する。<br />
<br />
第一章　DBを制する者はシステムを制す<br />
第二章　論理設計と物理設計<br />
第三章　論理設計と正規化<br />
第四章　ER図<br />
第五章　論理設計とパフォーマンス<br />
第六章　データベースとパフォーマンス<br />
第七章　論理設計のバッドノウハウ<br />
第八章　論理設計のグレーノウハウ<br />
第九章　一歩進んだ論理設計　SQLで木構造を扱う<br />
<br />
第一章　DBを制する者はシステムを制す<br />
　　ソフトウェア開発の歴史<br />
　　　　プロセス中心&rarr;データ中心<br />
　　　　　　データより、業務処理はよく変わるため<br />
　　　　要件定義&rarr;設計&rarr;開発&rarr;テスト&rarr;運用<br />
　　　　　　プロセス中心（要件定義～テスト）<br />
　　　　　　データ中心（要件定義～運用）<br />
　　　　　　DDD（要件定義～運用）<br />
　　　　　　データドリブン（運用）<br />
　　　　　　　　　実運用データを収集し、システムの改善や機能追加をデータに基づいて行う。<br />
　　　　各工程で共存できるできないの相性はある<br />
　　外部スキーマ&rarr;概念スキーマ&rarr;内部スキーマ<br />
　　　外部スキーマ：ユーザーインターフェースや入力データ（ユーザーから見えるもの）<br />
　　　概念スキーマ：データ同士の関係（設計書レベル）<br />
　　　内部スキーマ：DBのメタデータ（インデックスのデータ構造など、通常見えない情報）<br />
第二章　論理設計と物理設計<br />
　　テーブル定義&rarr;インデックス定義&rarr;ハードウェアサイジング&rarr;ストレージ冗長構成&rarr;ファイルの物理配置<br />
　　　　サービス終了時のデータ量を見積、それに耐えうるようにする。（または計画があれば可）<br />
　　　　ストレージ冗長構成：少なくともRAID５　余裕があれば10 ０は絶対ダメ<br />
　　バックアップ方式：フルバックアップ＋差分or 増分バックアップ　が一般的<br />
第三章　論理設計と正規化<br />
　　正規化<br />
　　１：１つのセルに１つの値<br />
　　２・３：(部分関数or推移的関数)従属の解消（特定のカラムの値が決まれば、一意に決まるカラムが存在しない　テーブル分割を行う）<br />
　　第３正規化まで実施する。<br />
　　　　メリット：更新時の不整合の防止、データの持つ意味が明確になり理解しやすい。<br />
　　　　デメリット：結合時性能悪化する。<br />
第四章　ER図<br />
第五章　論理設計とパフォーマンス<br />
　　例　注文の商品数のサマリカラムの追加のケース（非正規化）<br />
　　検索パフォーマンスを向上させるに非正規化は有効だがリスクが大きい<br />
　　　　更新パフォーマンスの低下<br />
　　　　データのリアルタイム性の低下<br />
　　　　後続の工程で設計変更すると手戻りが大きい<br />
第六章　データベースとパフォーマンス<br />
　　インデックスと統計情報<br />
　　インデックスの内部構造<br />
　　　　データ構造（キー値・ポインタをBツリー構造で持つ）<br />
　　　　　　上記が整理された状態で保持（データ更新のたびにここも更新される。）<br />
　　　　データの検索速度が上がる。<br />
　　　　B-tree：平衡木で探索距離が均一　フルスキャンO(n),BtreeO(log n )<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CRUDすべてについて性能が向上<br />
　　インデックス作成場所<br />
　　　　・データ1万以上のテーブル<br />
　　　　・カーディナルが高い列<br />
　　　　・SQLのWHERE・結合条件で利用される<br />
　　　　※主キーや一意制約のカラムには不要（内部で自動で作成されている）<br />
　　インデックスが効果ないもの<br />
　　　　・インデックス列に演算したとき　col_a * 1.1 &gt; 100（col_a&nbsp; &gt; 100/1.1 はOK）<br />
　　　　・SQL関数を使用したとき　SUBSTRなど<br />
　　　　・IS　NULLを利用したとき<br />
　　　　・否定を利用したとき　＜＞<br />
　　　　・ORを利用したとき　（INはOK）<br />
　　　　・後方一致、中間一致のLIKEを利用したとき<br />
　　　　・暗黙の型変換を利用したとき col_a(文字列の時） = 1 (　col_a = '1'はOK)<br />
　　　統計情報<br />
　　　　　SQL実行時この統計情報は計算され更新される。<br />
　　　　　必ずしも良い計算結果にならないので更新を止めることも可能。<br />
第七章　論理設計のバッドノウハウ<br />
　　　キーには固定長文字列のコードが望ましい<br />
第八章　論理設計のグレーノウハウ<br />
　　　代理キーを利用せず、自然キーを主キーに利用するのが望ましい<br />
第九章　一歩進んだ論理設計　SQLで木構造を扱う<br />
　　　SQLで木構造のデータを保存するのは難しい<br />
　　　　　例　部署情報など<br />
　　　解決法として隣接リストモデルなどある]]>
    </description>
    <category>未選択</category>
    <link>https://novice.blog.shinobi.jp/%E6%9C%AA%E9%81%B8%E6%8A%9E/db%E8%A8%AD%E8%A8%88</link>
    <pubDate>Sun, 20 Apr 2025 08:10:21 GMT</pubDate>
    <guid isPermaLink="false">novice.blog.shinobi.jp://entry/3</guid>
  </item>
    <item>
    <title>設計勉強することメモ</title>
    <description>
    <![CDATA[制御はメソッドの中で処理するなど、隠ぺいしてはいけない。<br />
<br />
状態管理機能<br />
インターフェイス使う理由<br />
B票の分析<br />
<br />
<br />
設計歴史<br />
<br />
プロセス中心<br />
データ中心<br />
オブジェクト中心<br />
　DDD　業務要件の理解<br />
データセット　データ整理、エンティティ、リレーション<br />
<br />
<br />
4月<br />
デザイン<br />
DB設計<br />
Spring(@Bean @Component @bport)<br />
DDD<br />
React<br />
<br />
<br />
DBの管理<br />
　DBのチューニング<br />
　　パフォーマンス管理<br />
　　　ヒント句<br />
　　　クラウド<br />
　　　ネットワーク<br />
　　　未来<br />
<br />
<br />
<br />
個人によってフォーカスしたい問題が変わる<br />
<br />
<a href="https://techblog.yahoo.co.jp/entry/2021011230061115/">ドメイン駆動設計で保守性をあげたリニューアル事例 〜 ショッピングクーポンの設計紹介 - Yahoo! JAPAN Tech Blog<br />
<br />
</a><a href="https://qiita.com/little_hand_s/items/c612b061d2b2b1eb8c1a">なぜDDD初心者はググり出してすぐに心がくじけてしまうのか - Qiita<br />
<br />
<br />
J</a>AVA<br />
　　JJUG<br />
<br />
Quita<br />
Zenn<br />
note<br />
WebDesginTrend<br />
Developers.IO<br />
　&nbsp; キーワードを見つけるため<br />
stackover flow<br />
&nbsp;　how to resolve<br />
&nbsp;　errorの内容で検索<br />
<br />
<!--shinobi1-->
<script type="text/javascript" src="//xa.shinobi.jp/ufo/190914400"></script>
<noscript><a href="//xa.shinobi.jp/bin/gg?190914400" target="_blank"><img src="//xa.shinobi.jp/bin/ll?190914400" border="0"></a><br><span style="font-size:9px"><img style="margin:0;vertical-align:text-bottom;" src="//img.shinobi.jp/tadaima/fj.gif" width="19" height="11"> </span></noscript><!--shinobi2-->]]>
    </description>
    <category>未選択</category>
    <link>https://novice.blog.shinobi.jp/%E6%9C%AA%E9%81%B8%E6%8A%9E/%E8%A8%AD%E8%A8%88%E5%8B%89%E5%BC%B7%E3%81%99%E3%82%8B%E3%81%93%E3%81%A8%E3%83%A1%E3%83%A2</link>
    <pubDate>Wed, 06 Apr 2022 00:40:11 GMT</pubDate>
    <guid isPermaLink="false">novice.blog.shinobi.jp://entry/1</guid>
  </item>

    </channel>
</rss>