#author("2024-03-28T19:07:53+09:00","default:irrp","irrp") #author("2024-04-16T15:17:21+09:00","default:irrp","irrp") →データベース関連 #contents *一般 [#l7946196] -[[超入門!テーブル設計をデータモデリングから考えよう - Speaker Deck>https://speakerdeck.com/k_takasaki/chao-ru-men-teburushe-ji-wodetamoderingukarakao-eyou]] 2024.1 -[[【入門】データベース設計まとめ #Rails - Qiita>https://qiita.com/KNR109/items/5d4a1954f3e8fd8eaae7#3%E5%B1%A4%E3%81%AB%E5%88%86%E3%81%91%E3%82%8B%E7%90%86%E7%94%B1]] 2023.11 -[[【随時更新】テーブル設計でミスらないために確認したいアンチパターン - Qiita>https://qiita.com/WebEngrChild/items/4fd38ade334a46629233]] 2023.9 -[[DB設計の共有で疲弊してない?dbdocsのすゝめ>https://zenn.dev/ukkyon/articles/1c6090488049be]] 2023.5 -[[論理削除が云々について - 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] →ドキュメント作成 -[[SchemaSpyを使用してRDBからER図を自動生成する>https://zenn.dev/pharmax/articles/62751d51c1c9d4]] 2024.4 -[[【DB設計】テーブル定義(クエリ)からER図の自動生成 | ジコログ>https://self-development.info/%e3%80%90db%e8%a8%ad%e8%a8%88%e3%80%91%e3%83%86%e3%83%bc%e3%83%96%e3%83%ab%e5%ae%9a%e7%be%a9%ef%bc%88%e3%82%af%e3%82%a8%e3%83%aa%ef%bc%89%e3%81%8b%e3%82%89er%e5%9b%b3%e3%81%ae%e8%87%aa%e5%8b%95/]] 2024.3 -[[MermaidでER図を書く - エキサイト TechBlog.>https://tech.excite.co.jp/entry/2023/11/07/111422]] 2023.11 -[[ChatGPTを使ってDDLからER図をすばやく作成する - Taste of Tech Topics>https://acro-engineer.hatenablog.com/entry/2023/08/29/120000]] 2023.8 -[[【DB設計】既存データベースからER図のリバース生成(自動生成) | ジコログ>https://self-development.info/%e3%80%90db%e8%a8%ad%e8%a8%88%e3%80%91%e6%97%a2%e5%ad%98%e3%83%87%e3%83%bc%e3%82%bf%e3%83%99%e3%83%bc%e3%82%b9%e3%81%8b%e3%82%89er%e5%9b%b3%e3%81%ae%e3%83%aa%e3%83%90%e3%83%bc%e3%82%b9%e7%94%9f/]] 2023.8 --A5M2で生成 -[[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]] *インデックス [#s4d91a2c] -[[インデックスを理解したい #SQL - Qiita>https://qiita.com/kntr0116/items/649ea41afa09743d74c4]] 2024.3 -[[RDBMSのインデックスの概略的なまとめ – サイゼントの技術ブログ>https://cyzennt.co.jp/blog/2024/03/02/rdbms%e3%81%ae%e3%82%a4%e3%83%b3%e3%83%87%e3%83%83%e3%82%af%e3%82%b9%e3%81%ae%e6%a6%82%e7%95%a5%e7%9a%84%e3%81%aa%e3%81%be%e3%81%a8%e3%82%81/]] 2024.3 -[[図解 DB インデックス>https://zenn.dev/suzuki_hoge/books/2022-12-database-index-9520da88d02c4f]] 2023.5 *mixiはいかにして増え続けるトラフィックに対処してきたか [#j17cf77f] -http://itpro.nikkeibp.co.jp/article/NEWS/20060330/233820/ -Webサーバーは単純に増やせばいいのであまり問題にならない。 -MySQLのスケーラビリティをどう確保するか --mixiは更新処理が多いためレプリケーションはあまり有効ではない --そこでまずデータベースの分割で対応 ---テーブルの種類によるDBの分割 ・テーブル位置の管理情報をもつパーティションマップを作成 ・利点:DB移行が楽(管理情報を書き換えるだけで良い) ・欠点:テーブルの結合ができなくなる(開発当時は) --この対応でもおっつかなくなった --次にユーザ単位でのDB分割 ---パーティション・マップ用DBの追加 ---アプリケーションの中だけでパーティション・マップを処理 --(これらはパーティション・マップが増えることへの対応か?) --DB分割によるコネクションの増加→メモリ・キャッシュで対応 --将来は更新日時によるデータ分割も検討する