酔いどれ設計ナイト2019の発表資料です。
![履歴を持つデータの設計](https://cdn-ak-scissors.b.st-hatena.com/image/square/4d264056e8bbeeced060c542ff40cfcd8006c4ca/height=288;version=1;width=512/https%3A%2F%2Ffiles.speakerdeck.com%2Fpresentations%2Feb07855e280a43bea5c41aa18128ee82%2Fslide_0.jpg%3F12336793)
引き続き「SQLアンチパターン」について、自分なりのチェックポイントを言語化していきたいと思います。 「SQLアンチパターン」を避けるためのチェックリスト①(DB論理設計編) - log4ketancho 「SQLアンチパターン」を避けるためのチェックリスト②(DB物理設計編) - log4ketancho 「SQLアンチパターン」を避けるためのチェックリスト③(SQLクエリ設計編) - log4ketancho 【本記事】 「SQLアンチパターン」を避けるためのチェックリスト④(アプリケーション設計編) - log4ketancho この記事では、SQL クエリを作成するときに抑えておきたい勘所について整理します。 SQLアンチパターン 作者: Bill Karwin,和田卓人,和田省二,児島修出版社/メーカー: オライリージャパン発売日: 2013/01/26メディア: 大型本購入:
引き続き「SQLアンチパターン」について、自分なりのチェックポイントを言語化していきたいと思います。下記の記事の続きです。 www.ketancho.net 本題に入る前に、ふたつ。嬉しかったこととお詫び(?)を。 t_wada さんからコメントを頂けた😂 素晴らしいエントリをありがとうございます。『SQLアンチパターン』は名著であると胸を張って言えます。ご興味をお持ちの方はこの機会にぜひ。 / “「SQLアンチパターン」を避けるためのチェックリスト①(DB論理設計編) - log…” https://t.co/Vjj0Yh2cqU— Takuto Wada (@t_wada) 2018年3月8日 スーパーなエンジニアの方からコメントをいただけるなんてと、帰り道ニヤニヤしてましたw 色々拙い部分があると思いますが、自分の理解のために拙くてもいいので言語化を続けていこうと思っています。引き
ずっと前から積ん読状態だった「SQLアンチパターン」を読みました。 何年積んでたか分からないSQLアンチパターン読み終わったー。噂に違わずいい本ですねー。もっと早く読むべきだった。— @ketancho (@ketancho) 2018年3月6日 噂通りとても良い本で、まさに「エンジニアとしての血肉本」と言えます。1, 2年目の頃に読んでおくべきだったなーと少し後悔しています。 SQLアンチパターン 作者: Bill Karwin,和田卓人,和田省二,児島修出版社/メーカー: オライリージャパン発売日: 2013/01/26メディア: 大型本購入: 9人 クリック: 698回この商品を含むブログ (46件) を見る 読んで終わりだと身につかないと思うので、自分なりのチェックポイントを言語化しておこうと思います。長くなってしまったので、章ごとに4つに分けたいと思います。この記事はその第一弾と
先日、「How a single PostgreSQL config change improved slow query performance by 50x」というPostgreSQLのSSD環境でのチューニングの記事を見つけたのですが、これをTweetしたらRTやLikeを比較的たくさん頂きました。 How a single PostgreSQL config change improved slow query performance by 50x https://amplitude.engineering/how-a-single-postgresql-config-change-improved-slow-query-performance-by-50x-85593b8991b0 How a single PostgreSQL config change improved sl
前提 筆者のスペック SQLが書ける程度でデータベースに詳しいかと言われるとそうではない新卒1年目のエンジニア(の卵)。 DWHとかデータウェアハウスって聞いたことあるけど具体的に何かはわからない。 DWHに加えてデータマートとやらが必要らしいとは知っていたが、具体的にデータマートが何かわからない。 DWHの4特性を知らなかった。 もちろんDWHの3つのアーキテクチャを知らなかった。 データベースよりむしろフロントエンドの方が好き。 今回の取り組みの目的 DWHの設計方法を理解し、要件に沿った最適な設計が可能になること。(2日で) 以上。 要件 複数のデータソースを元にBIツールでの分析がしたい。そのために必要なDWH・データマートを設計すること。 分析自体の要件は決まっているため、データソースを元にDWH・データマートをどのような設計にするか決定することがゴール。 データウェアハウス(D
データベースを使った開発や運用時においてGUIの管理インタフェースが欲しいと思うことは多々あります。特にプロジェクトによってデータベースの種類が違ったり、接続先があちこちに存在するとそう感じるはずです。 そこで使ってみたいのがDBeaverです。多彩なデータベースに対応した管理UIです。 DBeaverの使い方 接続先の選択画面です。PostgreSQL/MySQL/MariaDB/DB2/Oracle/SQL Serverなどの基本に加えてMS Access、infomix、MongoDB、Firebirdなども選択できます。 SSHトンネルに対応しているので本番環境のデータベースも確認できるでしょう。 接続しました。 テーブルの一覧です。 データも確認できます。 ダイアグラムはリレーションなどの関係が分かるようになっています。 DBeaverを入れておけば、大抵のデータベースには接続で
毎度おなじみ、はてブのホットエントリに「SIをダメにする負のスパイラル」というタイトルのまとめが掲載された。きしだ氏とはかなり視点は違うものの、開発現場の問題点については少し思うところがあるので意見を書いてみようと思う。と言っても、以下の話の内容はデータベースアプリケーションに限定した話であり、またSIerだけに限った話ではないのでその点はご容赦頂きたい。もちろんSIer各位の案件はデータベースは必須なので、本エントリで触れる問題点には該当するだろう。 Q.なぜ炎上するのか? A.正しいデータベース設計ができていないから結論から言おう。データベースアプリケーションの開発が炎上するのは正しいデータベース設計ができていないからだ。ここでいう「正しい」とは、論理的に証明できる正しさという意味ではない。「本来こうするべき」といった意味で捉えて欲しい。 「炎上」というのは、例えばテストが通らない、バ
名前 とりあえず削除フラグ 目的 エンドユーザから見るとデータがないことにしたいけど、実際のデータは消したくない 削除したデータを検索したい データを消さずにログに残したい 誤った操作をなかったことにしたい、直ぐに元に戻したい アンチパターン 例えばis_deletedというカラムがtrueの場合は削除されているとみなす メリット update文ならデータが簡単に元に戻せる気がするのでなんとなく安心 -> 俺のupdate文でなんとかなる!! 起こること SELECTするときには常にWHERE句が追加で必要になり、コードが削除フラグだらけになる 全員テーブル設計に精通してるわけではないので、テーブルによって削除フラグの有無があったりした場合、認識の齟齬を生みやすい 例えばrubyでdefault_scopeを用いて、よかれとおもってコードレベルでデフォルトを変えたらバグがたくさん出てくる
ベクトルの違うデータ まあ、それは事実。 ただ、履歴をそのまま残したいということも事実。 いちいち削除履歴テーブルなんて作ってられないのも事実。 ※ここでの論理削除は、復活する論理削除じゃなく、物理削除の代わりとして履歴のための論理削除を指します。(復活する論理削除って、そもそも削除とは言えないって気も...) 本来、論理削除されたデータって... そのテーブルの定義するデータとはベクトルの違うデータ である考えます。 でも、わざわざ削除されたデータを保持するテーブルを作ると、それはそれで面倒なのでそのまま同じテーブルに持ったままにする。その方が扱いが簡単なことが多いから。削除フラグを true にするだけで済むから。 個人的には、業務上重要なテーブルに関しては、しっかりと「削除履歴テーブル」を用意して、本体のテーブルには常に有効なデータだけがある状態の方が、データメンテもプログラムも遥か
ERPの落とし穴part1~SW開発ではない。要求開発だ!の続き。 「グラス片手にデータベース設計~販売管理システム編 (DBMagazine SELECTION)」を非常に参考にしているので、全てが僕のオリジナルの考えではないので注意。 【1】業務の裏には会計あり。業務データは必ず仕訳データに連携される。 業務システムの裏には必ず会計システムがある。 Webで作っていても、メインフレームで動く会計システムと連携できなければ、ただの箱に過ぎない。 会計システムと連動できて初めて、業務コストや売上が計算出来るし、更には売掛金管理や請求管理で経理担当者の仕事もサポートできる。 例えば、「グラス片手にデータベース設計~販売管理システム編 (DBMagazine SELECTION)」によれば、販売業務では、受注→出荷→売上→請求→入金のような業務フローがあるだろう。 業務データの裏には、仕訳デー
MySQL 5.6が登場してからかなりの月日が過ぎたが、他のことで多忙だったせいか、MySQL 5.6についてはあまりブログで情報を発信していないことに気がついた。これはイカン!!と思い、MySQL Casual Advent Calendar 2014に合わせて、MySQL 5.6を使用する上で最もオススメしたい機能であるクラッシュセーフなレプリケーションについて解説しようと思う。この記事は16日目の記事である。 レプリケーションがクラッシュセーフとはどういうことかクラッシュセーフとは、何らかの事情により、プロセスがダウンしたりマシンが電源ごと落ちたり(つまりクラッシュ)しても、再起動後に以前の状態に戻って処理を再開できるということだ。データのクラッシュリカバリであればみなさん既によくご存知であろう。(REDOやUNDOするアレのことだ。本稿では面倒臭い・・・ではなかった、本題ではないた
東大喜連川研究室の早水さんが日本PostgreSQLユーザ会で話された「性能測定道」がとても勉強になった。 スライドとYouTube動画が公開されています。YouTube にはスライドには書かれていない話しも出てきて、説明も非常にわかりやすいです。こういうアカデミックで最先端の研究をされている方が情報発信されるのはとてもうれしい。 id:hayamiz さんのことは何年も前から認識していたが、喜連川研究室でデータベースの研究をされているというのは初めて知りました。 TOP | Yuto Hayamizu's web site も要チェックです。 性能測定道 事始め編 性能測定道 事始め編 from Yuto Hayamizu 性能測定道 実践編 性能測定道 実践編 from Yuto Hayamizu 「性能測定道 事始め編」で紹介されていた本を買ってみましたが、なかなか歯ごたえのありそう
こんにちは、すっかり秋ですね!@yone098 です。 みなさんDBの設計してますか? DB設計時のサイズ見積り 以前はてなダイアリーで書いた記事は5年前のものであり、リンクが切れているものがあるので最新版として MySQL, PostgreSQL, Oracle, SQLServer におけるDB設計時のサイズ見積りをまとめ直しました。 URL内のバージョン表記を変えると以前のバージョンの情報になります。 MySQLは、あまり情報に変化は無かったので Excel でマクロなどを作成して自社で自動算出出来るようにするのが良いと思います。 データタイプごとに必要な要求ストレージが決まっているのでレコードサイズが決まり、あとは要件次第で何レコードになるかを予測します。 データタイプごとに必要な記憶容量 テーブルの最大サイズ関連 http://dev.mysql.com/doc/refman/5
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く