<?xml version="1.0" encoding="UTF-8" ?>
<rss version="0.91">
  <channel>
    <title>noviceSystemEngineer</title>
    <description></description>
    <link>https://novice.blog.shinobi.jp/</link>
    <language>ja</language>
    <copyright>Copyright (C) NINJATOOLS ALL RIGHTS RESERVED.</copyright>

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

  </channel>
</rss>