本
ビジネス書ベストセラーを100冊読んで分かった成功の黄金律作者:堀元見徳間書店Amazonタイトルからすると、なにかビジネス書の要約をまとめた本のようにも思えるが、実際はそうではなく、ビジネス書が述べる結論や法則といったいわば「黄金律」がいかに矛盾…
コロナの感染者はピークアウトしたものの、今度はロシアがウクライナを侵攻した。世界の秩序も変わらざるをえなくなるだろう。 ヨーロッパ思想入門 honto.jp某Youtuberがおすすめしていた本。岩波ジュニア新書なので、中高生向けだとは思うのだが、内容はか…
今週は、コロナの影響もあり、出張がリモート会議になったせいで、病院に行ってきた日以外はほぼ家から出ず。 3連休はゆっくり本を読むことができた。読んだ本の感想を書いていく。 清沢冽 外交評論の運命(中公新書) honto.jp暗黒日記を読んでから、著者…
先日の暗黒日記の応徴士が気になったので検索したが、ほとんど出てこない。しかし、その中にも面白い内容が出てきた。www.city.narita.chiba.jp その頃はどこの家庭でも、戦力の一翼を担い得るものならばと、鍋釜、鉄びん、火鉢などの鉄製品を、時には現在使…
今月からリングフィットアドベンチャーをはじめた。まだそんなにやっていないが、あまりに家に居すぎするので、ぼちぼちやっていこうと思う。www.aozora.gr.jp戦前の人の日記を実際の出来事と比較しながら、見ていくのが面白い。当然、戦前の人なので、私た…
辞書になった男 honto.jp 袂を分かつことになった二人の辞書編纂者の物語である。概ね知っていた話でもあり、「ゆる言語学ラジオ」でも触れられていたが、本を読むとかなり違う印象になった。ケンボー先生が怒るのも無理はない内容が多い。「事故」の件はと…
日本銀行と政治-金融政策決定の軌跡 (中公新書)作者: 上川龍之進出版社/メーカー: 中央公論新社発売日: 2014/10/24メディア: 新書この商品を含むブログ (11件) を見る速水総裁から今の黒田総裁までの総裁の動きと政治の関係についてをまとめた本。日銀の動き…
最後は短くなった。なぜなら、より物理設計に近くなると異論がなくなるからである。言い換えると、論理設計は正解がない。設計者の裁量の部分が大きく、何が絶対的に正しいとは言い難い。 そもそも、アンチパターンとはなんだろうか?本書の著者によると 問…
想定不足により深刻な障害が起きるというアンチパターン。障害が起きるまで放置するのではなく、想定をし、予防をしようというもの。とくに運用後の体制について記述されている。 ベンチマークを取っておく、テスト環境を用意する。例外処理をきっちりやって…
MVCアーキテクチャにおいて、モデルを単なるCRUDの部品として扱ってしまうと、それ以外のコントローラなどがあらゆるモデルのオブジェクトを使って、肥大化してしまい、修正が大変になるという問題。「ドメインモデル貧血症」ともいう。 フレームワークによ…
アプリケーションの開発のルールをデータベース設計だけには適用しないということ。 データベースの設計者だけが特権的な位置にいるということがあるらしい。 よくわからないが、少なくともここで述べられている文書化やバージョン管理をしない(あるいは知…
SQLの実行結果のステータスを何も見ないなど、エラー処理を放置してしまうこと。 どのようなエラーがあるのかを知っていればほとんどこのような処置をすることはないと思うが。
擬似キーの欠番を埋めるとかいうことはやめましょう。ということ。擬似キーは内部的な値なので欠番が生じても何も問題ないはずである。 ただし、本当のコードつまり、人間が管理すべきコードとしてはあまり良くないかもしれない。このため採番用のテーブルを…
SQLを文字列から組み立て、かつユーザーが入力させる値を途中で組み込むときは、SQLインジェクション攻撃に気をつけましょうというもの。
パスワードを平文のままデータベースに保管してはいけませんよ、という内容。
ワイルドカードを使ったSQL文は避けろというもの。属性を加えるとエラーになったり、ワイルドカードですべての列を取得するのはパフォーマンスに影響するから、だめだよ。という。列名を明示的に指定しましょう。ということ。 確かに、使う必要のある列のみ…
スパゲッティな複雑なクエリを書くと、意図しない結果を出したり、デバッグも難しくなったりするというもの。 解決策としては分割統治を行うべきだということで以下の解決策を出している ワンステップずつ SQLを分割し、ワンステップずつ処理すべき UNIONを…
全文検索をSQLでやろうとして、LIKE演算子や正規表現で検索しようとすること。インデックスなどが使えないため遅い。全文検索エンジンを使いましょうというもの。 たしかにそのとおりですね。日本語の場合は単語境界をとるのが難しいのと、送り仮名など表現…
ランダムにデータを抽出する際にorder by rand()を使うと、件数が多くなると遅いよ、というアンチパターン。MySQLを使ったこともなければ、ランダムにデータを取り出すという要求もないので、知らなかったが、要は並び替えを常に行うので、遅いらしい。 で、…
最大値や最小値が得られた値について、その最大値をもつタプル(行)の別の属性(列)を取得したいとした時に、group by句に含まれない属性をselectの属性に含めてしまうというもの。 ほとんどのRDBMSではエラーになるが、MySQLとSQLiteはエラーにならないと…
NULLの振る舞いについて。本書ではNULLを使うことがアンチパターンでなく、一般の値としてNULLを使うことが良くないと述べている。 とくに、すべての項目にNOT NULLを使うように強制するのはよくないという。欠けている値を表現するには、何かの値を「欠けて…
インデックスの性質を理解して、闇雲にインデックスを作成したり、逆に全く設定しないということのないように、というもの。そりゃそうだ。 ただ、解決策に示されているのは、すでに運用中のデータベースに対するパフォーマンス改善としてのインデックスの作…
画像データなどをデータベースに格納せず、格納先のみを保存して、画像データなどを外部に保存するのは以下の様な問題がある、という指摘。 データベース上のファイルを削除しても外部ファイルは自動的に消えないという問題。 トランザクション分離がサポー…
IN句をつかったCHECK制約だけで列の値を制限するやり方には問題がありますよ。という指摘。プログラムで言うところの列挙型(ENUM)のようなもの。MySQLでも同様の機能があるようだ。 問題点は以下のとおり。 許可されている値の一覧がわからない。CHECK制約…
小数を格納するのにFLOATやDOUBLE, REALなどを使ってしまい、誤差がでてしまうというもの。金額の計算などにはNUMERICやDECIMALを使いましょう。はい。そのとおりですね。
顧客テーブルの属性に毎年、集計データの列を追加するという、ちょっと悪夢のような設計が紹介されていた。テーブルのタブル(行)の長さが変わるというのは運用上、物理的な格納効率を悪化させることがある。また、列が追加されるということは、SQLを実行す…
ジェイウォークのように繰返し項目をテーブルを分割せずに対応する方法の一つ。ジェイウォークは区切り文字を使って一つの属性に押し込めていたが、このパターンでは繰返し項目を単に番号をつけて列を分割する。 例えば、住所録に電話番号を複数格納する必要…
ある参照整合性制約を設定しているテーブルがあったときに、そのテーブルに対し別のテーブルの主キーに依存する参照整合性制約を設定したいときにはどうすればよいか?というもの。 このときに、別の項目にどのテーブルとの制約かという属性と、外部キーを一…
テーブル設計の変更が起きると、それを使用するプログラムに大きな影響を与えることから、出来る限りテーブル設計の変更を避けようという意識が働く事が多い。よって、柔軟な設計にするため、より抽象度の高いテーブルを設計しようとする。ただそのデメリッ…
「参照整合性制約を設定しない。」という設計指針に対するアンチパターン。比較的このような設計をしているところを多く見る。 そもそも参照整合性制約を設定しないということは、ERモデルも記述する必要がない。テーブル定義はすべてExcelで定義すればよい*…