#author("2023-03-24T09:15:06+09:00","default:irrp","irrp") →データベース関連 #contents *一般 [#l7946196] -[[論理削除が云々について - mike-neckのブログ>https://mike-neck.hatenadiary.com/entry/2015/03/24/231422]] 2015 --テーブルに状態を持たせない --究極には機械が認識するキーと、人間にとって意味のあるデータだけのエンティティだけですべての業務のデータを構成できる --日付を持つデータはイベント(これもひとつのエンティティ) --NULLのデータは絶対に持ってはならない --テーブルはでかく作るな、小さく作れ --テーブル同士の関連は直接持つな、関連を表すテーブルを作れ --1:1の関連になったとしても、イベントとそれに付随するデータは分離しろ --データが増える?金と物理で殴れ(ディスク増強しろ) -[[データベースの概念スキーマ、外部スキーマ、内部スキーマ - Qiita>https://qiita.com/lymansouka2017/items/615dac8890e39a4da86e]] 2020 --外部スキーマ…ユーザから見たときの見た目。ビューに相当 --概念スキーマ…CRETE TABLEなどのDDLに該当。データモデル --内部スキーマ…DBの実装。ファイルやインデックスなど -[[M1Mac × Docker × SchemaSpy × MySQL8.0でテーブル定義書とER図を自動生成してみる>https://gmor-sys.com/2022/10/19/db-document-autocreation-tool/]] 2022.10 -[[【入門】データベース設計まとめ - Qiita>https://qiita.com/KNR109/items/5d4a1954f3e8fd8eaae7]] 2022.8 -シャーディングは、特定のタイプのパーティション分割であり、いわゆる水平パーティション分割の一部です。 -[[シャーディング - Qiita>https://qiita.com/hharu/items/15627d2058bffe1fadf0]] 2019 -[[シャーディングとは、テーブルシャーディングという可能性【水平分割】 | SEO対策なら株式会社ペコプラ>https://pecopla.net/web-column/db-shard]] 2020 -[[DB設計について考えてみた。ナチュラルキーとサロゲートキーはどちらが良いのか? | 株式会社AMG Solution>https://amg-solution.jp/blog/8980]] 2022.4 -[[交差テーブルには関連の意味を表す名前をつけよう>https://qiita.com/tkawa/items/dc3e313021f32fd91ca6]] 2019.6 -[[DB設計時のサイズ見積もり>http://d.hatena.ne.jp/yone098/20090512/1242088638]] -[[リレーションの正規化>http://ja.wikipedia.org/wiki/%E3%83%AA%E3%83%AC%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AE%E6%AD%A3%E8%A6%8F%E5%8C%96]] --第1〜第5正規形の説明、ボイス・コッド正規形の説明など -[[フリーで使えるDBモデリングツールまとめ>http://blog.asial.co.jp/367]] --Clay,DBDesigner4, MySQL Workbench,WWW SQL Designer,A5:SQL Mk-2, Execute Query -[[DBDesigner4>http://fabforce.net/dbdesigner4/]] MySQL用のDB設計ツール *ER図 [#tffd41b8] →ドキュメント作成 -[[ChatGPTにER図を作成してもらってみた | DevelopersIO>https://dev.classmethod.jp/articles/create-er-diagram-by-chatgpt/]] 2023.3 -[[tblsでデータベースドキュメントを生成する(1.ドキュメント生成編) - Qiita>https://qiita.com/k1LoW/items/2010413a8547b1e6645e]] 2018 -[[PlantUMLでER図を書く - Qiita>https://qiita.com/kuro221/items/f2bc325319d4e1827989]] 2022.10 -[[ER図をマウスを使わないで書きたいし、その内容をGitLabで管理もしたい - Qiita>https://qiita.com/arisa5/items/653a95ab3464adac9875]] 2022.9 -[[ER図の自動生成について、dbdiagram.io, DBeaver, A5M2 を比較してみる。 - Qiita>https://qiita.com/ryamate/items/12bd8cd819079c28644c]] 2022.8 -[[ER図の作図について、 Draw.io, PlantUML, Mermaid を比較してみる。(VSCode拡張機能など) - Qiita>https://qiita.com/ryamate/items/3779418172c4f5a83212]] 2022.7 -[[ブラウザでER図が描けるWWW SQL Designer紹介>http://labs.unoh.net/2007/10/erwww_sql_designer.html]] --http://ondras.zarovi.cz/sql/ -[[ER図:http://www.netlaputa.ne.jp/~hijk/study/ae/er.html]] -[[誰でもかけるER図:http://www.gfocus.co.jp/information/column/column02.html]] *mixiはいかにして増え続けるトラフィックに対処してきたか [#j17cf77f] -http://itpro.nikkeibp.co.jp/article/NEWS/20060330/233820/ -Webサーバーは単純に増やせばいいのであまり問題にならない。 -MySQLのスケーラビリティをどう確保するか --mixiは更新処理が多いためレプリケーションはあまり有効ではない --そこでまずデータベースの分割で対応 ---テーブルの種類によるDBの分割 ・テーブル位置の管理情報をもつパーティションマップを作成 ・利点:DB移行が楽(管理情報を書き換えるだけで良い) ・欠点:テーブルの結合ができなくなる(開発当時は) --この対応でもおっつかなくなった --次にユーザ単位でのDB分割 ---パーティション・マップ用DBの追加 ---アプリケーションの中だけでパーティション・マップを処理 --(これらはパーティション・マップが増えることへの対応か?) --DB分割によるコネクションの増加→メモリ・キャッシュで対応 --将来は更新日時によるデータ分割も検討する