タグ

dbに関するmoroのブックマーク (48)

  • 外部キー制約は何も考えずに適用するとよくない - かとじゅんの技術日誌

    このブログが話題になってますね。制約を付けること自体はよいことだけど、無目的に適用すると害も生じると思います。 無目的という言い方はおかしいな…。外部キー制約をどのように使えばいいのか、逆にどんなときに使うとまずいのかを考えてみたいと思います。 tech.tabechoku.com 例えば、これ。外部キー制約はできるだけ付けるとか、何も考えずに付けるとよくないと思います。 外部キー制約は、可能な限りつけるようにしています。 DBが別れている場合、外部キーはもちろん貼れないのですが、そうでない場合はとにかく何も考えず貼っています。データベース設計の際に気をつけていること - べチョク開発者ブログ テーブル設計をシミュレーションする いいたいことの結論はこれ。以上終了なのですが、もう少しわかりやすく書いてみよう。 何も考えずに外部キーを貼るのは良くないな。トランザクション境界の外で結果整合性

    外部キー制約は何も考えずに適用するとよくない - かとじゅんの技術日誌
    moro
    moro 2020/06/18
    昨日から何度か読み返してみたけど、やっぱり外部キー制約あったほうがいいじゃんね、という気持ちになる。もとの食べチョクさんの意見に賛成で、現在は迷ったらつけるでいいんじゃないですかね
  • DB 設計勉強会 / タワーズクエスト社 和田省二さんを先生にむかえた勉強会のメモ。文責は sunaot です。

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    DB 設計勉強会 / タワーズクエスト社 和田省二さんを先生にむかえた勉強会のメモ。文責は sunaot です。
    moro
    moro 2017/06/01
    いいやつだ
  • JJUG CCC 2017 Springで論理削除フラグをどうにかするための話をしてきました 【FOLIOスポンサー】 - itohiro73’s blog

    JJUG CCC 2017 Springで、「データ履歴管理のためのテンポラルデータモデルとReladomoの紹介」という話をしてきました。 データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3 from Hiroshi Ito 今回の登壇は、株式会社FOLIOのスポンサーセッションです!FOLIOについてはこちらの入社エントリー記事もご参考ください。Toggetterは下のリンクから。 togetter.com 世の中のみなさんが「論理削除フラグ」を使いたくなるモチベーションとしては、実は「削除」ではなく別のビジネスロジックを実装したいだけであることがほとんどだと思います。 たとえば論理削除フラグという名の死亡フラグ - @ledsun blogというエントリを参考にさせていただくと、下記のような要件の例があります。 ・社員が退職(・転

    JJUG CCC 2017 Springで論理削除フラグをどうにかするための話をしてきました 【FOLIOスポンサー】 - itohiro73’s blog
    moro
    moro 2017/05/22
  • Rails だって硬いデータベース設計をしたい!そんなあなたに贈る Tips 4 選 - peroli Developer's Blog

    2016 - 09 - 09 Rails だって硬いデータベース設計をしたい!そんなあなたに贈る Tips 4 選 list Tweet こんにちは、ペロリのサーバサイドエンジニアの @a_suenami です。 今回は Ruby on Rails アプリケーションにおけるデータベース設計についてちょっとご紹介したいと思います。 データベース設計してますか? みなさん、データベース(以下、DB)設計していますか?Scaffold したときにできた migration ファイルをそのまま使ったりしてませんよね? Ruby on Rails (以下、 Rails )は CoC(Convention over Configuration: 設定より規約)を強く提唱している フレームワーク であり、それによって得られる恩恵も大きい反面、かなり強めに設計の自由度を束縛されるという特徴もあります。特に

    Rails だって硬いデータベース設計をしたい!そんなあなたに贈る Tips 4 選 - peroli Developer's Blog
    moro
    moro 2016/09/09
    良い話だった
  • 論理削除が云々について - mike-neckのブログ

    今日朝イチで見たエントリーがこれでした。 qiita.com 論理削除の弊害は色々なところで言われているけど、僕の足りない頭で理解している所によると、二つの値しか持たない削除フラグ的なものはカーディナリティが云々で検索条件につけても性能上的にもよくないし、意味がないということです。 論理削除を完全に悪だとは言いませんが、論理削除を極力排したい人たちは、基的にデータそのものを削除する、もしくは論理削除というのはまだ要件的に未確定な要素が隠されていることを示すフラグであると考えているようです。 僕がITの業界でキャリアをスタートしてから2年目くらいに配置されたプロジェクトではT字型ER手法というのをベースにしたテーブル設計をしていて、そこでかなり鍛えられたわけですが、その時にはだいたいこのような原則を叩きこまれました。 テーブルに状態を持たせない 究極には機械が認識するキーと、人間にとって意

    論理削除が云々について - mike-neckのブログ
    moro
    moro 2015/03/25
    状態をテーブルに持ちたくない気分に賛成しつつ、消し込み機能などで「次工程のイベントデータがないこと」を毎度引くのが辛くてstatusカラムをつけてしまう。なので状態はキャッシュ/物理設計として妥協します
  • 論理削除gemを1年ほど保守してみて。重大な欠点にやっと気づいたポエム。 - 波打際のブログさん

    はじめに kakurenboというgemはご存知でしょうか?paranoiaの欠点を克服すべく1年ほど前に私が開発を始めたgemです。(参考:Rails4と3で論理削除を行うためのGem Kakurenbo の紹介と今更論理削除Gemを実装した理由。 - 波打際のブログさん) issueやpullrequestを送信してくださる善意のコミッターの方々に支えられながら1年ほど保守をしてきました。その上で薄々は気がついていたのですが、どうしても認められなかった重大な欠点をハッキリと認識させられたのでポエムにしました。 論理削除gemの起源 kakurenboもparanoiaも、廃れてしまった acts_as_paranoid を再実装したものです。 これらのgemは導入するだけで、いつも使っているdestroyメソッドが論理削除メソッドに早変わりする素晴らしいgem...になるはずだったので

    論理削除gemを1年ほど保守してみて。重大な欠点にやっと気づいたポエム。 - 波打際のブログさん
    moro
    moro 2015/03/05
    Rails既存の機能を置き換えるのはやばいという気付きはそのとおりだと思いますが、それはそれとして「論理削除」もそれ自体が既にやばい。論理とは削除とは。
  • イミュータブルデータモデル(入門編)

    6. Step1 エンティティの抽出 発送担当者が受注リストをもとに、商品の在庫を確認し、在庫が あれば商品を発送する。 ① 要求仕様の「動詞」を抜き出しエンティティとする。 ② ①に関わる「名詞」を抜き出しエンティティとする。 ③ エンティティ間の関連に線を引く ④ 属性や候補キーも分かる範囲で書いておきます。 間違い! この段階で実装をプロパティファイルにするとか、Enum にするとか決め打ちでエンティティとして表さないのはや めましょう。 まず、はじめにエンティティを抽出します。

    イミュータブルデータモデル(入門編)
    moro
    moro 2014/10/21
    すばらしい。参考資料も読むべし。| といいつつ、更新日を勝手にふるフレームワーク使ってます すみません。。。
  • リレーショナルモデルのドメイン設計についての議論

    リレーショナルモデルを実践するには、ドメイン(≒データ型)を如何に正しく設計するかということが極めて重要になる。しかしながら、ドメインをどう設計すべきかという議論はあまりされていないように思う。その結果、ドメインについての理解はあまり進まず、データベース設計に失敗しているパターンが多いように思われる。 というわけで今日のテーマはドメインである。 集合を定義するリレーショナルモデルにおけるデータ型とは何か。リレーショナルモデルを実践するにはまずその点から理解する必要がある。 リレーショナルモデルでは、データ型はドメインと呼ばれる。ドメインとは、その属性(≒カラム)に入るべき値はどういったものかを集合として定義したものだ。言い換えると、属性値とはある集合の要素の一つであると言える。従って、ドメインを設計する際には、SQLで言うところのデータ型、つまりINTやCHARといったものだけでなく、その

    リレーショナルモデルのドメイン設計についての議論
    moro
    moro 2013/12/08
    採番体系なんて『2000年度以降のデータは先頭がAになる』みたいに変わりうるわけで。まさに『(いま)0-9+な番号だから数値だよね☆』とやって詰む事例があるので、他所が決める値をキーとせず人工キー推奨してます。
  • HowFriendFeedUsesMySqlToStoreSchemaLessData - FriendFeed では MySQL を使いどのようにスキーマレスのデータを保存しているのか

    HowFriendFeedUsesMySqlToStoreSchemaLessData - FriendFeed では MySQL を使いどのようにスキーマレスのデータを保存しているのか 目次 この記事について FriendFeed? では MySQL を使いどのようにスキーマレスのデータを保存しているのか 背景 概観 詳細 一貫性と原子性 性能 FriendFeed? では MySQL を使いどのようにスキーマレスのデータを保存しているのか この記事について "How FriendFeed? uses MySQL to store schema-less data" の日語訳です http://bret.appspot.com/entry/how-friendfeed-uses-mysql CC 2.5 でライセンスされています: http://creativecommons.org/

    moro
    moro 2009/03/02
  • Leo's Chronicle: XML時代の終焉 ~ XMLから再びCoddへ

    先日、ACM SIGMODの日支部大会に招いていただいて、「Relational-Style XML Query (ACM Portal http://doi.acm.org/10.1145/1376616.1376650)」について講演をしてきました。Relational-Style XML Queryは、XMLという複雑な構造をもったデータに対して、SQLのようなテーブルデータへの検索に使われる言語で問い合わせする手法です。 この研究の肝は、木構造データといわれるXMLでも、実はそのほとんどがリレーション(Microsoft Excelのようなテーブル形式のデータ)の組み合わせと考えることができ、そのテーブル構造の情報(スキーマ)を使うと、検索が非常に簡単に書けるという点です。

    moro
    moro 2008/12/26
  • Safari 3.1 に実装された「Client-side database storage (SQL API)」とは何か? - IT戦記

    はじめに Safari 3.1 には Client-side database storage (SQL API とも呼ばれています。)という新しい仕様が実装されました。 というわけで、この新しい API について色々調べたことを簡単にまとめておきます。 Client-side database storage が使えるブラウザ 2008 年 03 月 27 日現在では、 Safari 系のブラウザのみです。 Safari 3.1 WebKit Nightly Client-side database storage とは Selectors API とは HTML5 で定義された仕様です。詳細に関してはこちらをどうぞ。 簡単に説明すると JavaScript 内でリレーショナルデータベースを使えるということです。 もっと簡単にイメージするために、実際のコードを示すとこんな感じです。 va

    Safari 3.1 に実装された「Client-side database storage (SQL API)」とは何か? - IT戦記
  • http://d.hatena.ne.jp/habuakihiro/20070826

    moro
    moro 2007/08/27
  • スタロジカンファレンスやります!

    moro
    moro 2007/05/29
    ActiveResourceをもっと勉強すれば何か書けるようになる、かも?
  • fkino diary(2007-05-27)

    _ Seasar Conference 2007 Spring Seasar Conferenceに行ってきました。というか、参加したセッションはほとんどスタロジカンファレンス(?)でした。(^_^;) Seasar Conferenceへの参加は今回で3回目(皆出席)ですが、過去2回に比べても今回は非常に有意義でした。 Web2.0時代のDB設計 〜RDB meets URL〜 RDBMSによる閉塞感 ベンダーにロックインされる Javaによる閉塞感 気が重い レンタルサーバーで動かない Next COBOL < J2EEはメインフレームのリプレースのための規格 システム要件による閉塞感 DBは経営資源というけれど、活用できていない そこでREST RESTfulDao S2DaoをREST化 リソース系テーブルに価値がでてくる id:t-wadaさんがDHHにインスパイアされた(去年の

    moro
    moro 2007/05/28
    あとで詳しく聞く
  • Young risk taker.: [Rails] Unit::TestかRSpecのSpecファイルを実行しボトルネックとなるクエリを書き出すSlowQueryLoggerを作った

    久々に面白いモノを作った。 SlowQueryLogger RailsではActiveRecordを利用してガンガン富豪プログラムを書きがちなため、適切にインデクスを張っていないとすぐに重たくなるので、Rails中で発行された遅いクエリをロギングするプログラムを作った。 ActiveRecordの参照系クエリを発行するメソッドをEXPLAINにより実行解析情報を取得しロギングしてから通常の参照クエリを発行するように拡張し、Rails付属のUnit::TestのfunctionalテストまたはRSpecのコントローラーのSpecファイルを実行する。最終的には、filesortか一時テーブルを使用しているクエリがログファイルに書き出される。 つまり、functional testを定義したファイルかRSpecのcontrollerのスペックファイルがあれば特に何も用意する必要はない。 現在My

    moro
    moro 2007/04/24
    specの場合はmodelテストのほうが良さげ、でも無いのか。う〜ん。
  • [Rails] ActiveRecord::QueryCacheを実装した。CacheStoreにはmemcachedを使用。

    ActiveRecord::QueryCache ActiveRecordの富豪っぷりに困っている。キャッシュの仕組みが用意されているみたいだが過去の遺物となり使用されていない様子。(See Class::ActiveRecord::QueryCache) だから作った。 ActiveRecordの富豪っぷり ActiveRecord#findではフレーム関数を大量に呼び出し深いスタックを生成する。毎度引数+同じ値で呼び出されるのに毎度SQLの生成を行う。 そこでキャッシュ戦略でも比較的基的な、クエリ単位でのキャッシュをおこなうクエリキャッシュとしてActiveRecord::QueryCacheを実装した。引数をキーにしてキャッシュを保存するため、SQLの生成も行わず高速に結果をフェッチすることができる。今後は、エンタープライズでのO/R Mapplerのキャッシュ戦略などを調べてもう

    moro
    moro 2007/04/23
  • Twitterのトラブルから見る、DB分割でスケーラブルなRailsサイト構築:TKMR.blog.show

    最近、2.0な方々の間でTwitterが話題になってる。で、そのTwitter自体も面白いんだけど、TwitterについてDHHがブログを書いてRailsでの大規模サイト構築が話題になってるのが面白い。 Twitter trouble (Loud Thinking - DHH) まずTwitterの高負荷について言及、Twitterは11,000リクエスト/秒 の高負荷で問題となっているらしい。 そしてスケーラビリティの鍵はDB分割だ、と言っている。Railsは基一つのDBを見るのでスケーラビリティの問題になる (確かにWebサーバはロードバランサがあればいくらでもスケールするしね、Sessionの共有だけ気を付ければ) ↓ Dr Nic » Magic Multi-Connections: A “facility in Rails to talk to more than o

    moro
    moro 2007/04/21
  • Magic Multi-Connections

    Ruby on Rails → ActiveRecords WARNING Despite the 1.0.0 version number, various people have experienced problems using this tool. I haven’t yet found a solution (I haven’t really been looking though), so please subscribe to the forum or RubyForge news for any updates on a solution. What ActiveRecord models are allowed one connection to a database at a time, per class. Ruby on Rails sets up the d

    moro
    moro 2007/04/20
  • Rails Graphviz用のER図を生成するプラグイン - SWDYH

    GraphvizでER図を書く方法(その2) http://d.hatena.ne.jp/T-ABYSS/20070302/1172815082 どうもしっくりくるER図を書くツールがないので、 ここを参考にGraphvizで書いていました。 なかなかいいなあと、思ってたんだけど、 やっぱり全部手で書くのはめんどいので、 ActiveRecord::SchemaDumperを改造して、 dotファイルを生成するプラグインを作ってみました。 http://youhei.s276.xrea.com/er_diagram.tar.gz 出力はこんな感じ。Flickrぽい色にしてみました。 使い方はvendor/plugins以下にファイルを置いて、 % rake doc:er_diagramとするだけです。doc以下にGraphviz用のdotファイルがつくられます。 注意! かなり適当につくっ

    Rails Graphviz用のER図を生成するプラグイン - SWDYH
    moro
    moro 2007/04/15
  • 「ちょっと待て」 真・MySQLのクエリを最適化する10のTips:CodeZine

    Jaslabs: High performance phpで紹介された「MySQLのクエリを最適化する10のTips」に対して、反論している人がいる。ブログ「20bits」のJesse氏だ。彼は「10 Tips for Optimizing MySQL Queries (That don’t suck)」というエントリーで、Jaslabs氏の記事は適切でないとしている。 Jesse氏の経験によれば、SQL最適化で最も重要なことはSQLDBの基をしっかりと理解することであり、60%がこれで解決するという。残り35%はDBやクエリの特殊な性質に対する対処であり、最後の5%で発想の転換などを求められる。Jaslabs氏はここにばかり力を入れており、それはまったくもって時間の無駄だと述べている(Jesse氏は「SQL_SMALL_RESULTなんて、生まれてこの方使ったことすらない」とまで言

    moro
    moro 2007/04/11
    すごくいいことが書いてあるんだが"tips"ではないと思う、と揚げ足取り。