タグ

DBとProgrammingに関するclavierのブックマーク (6)

  • DBの基礎 - コネクションプーリングについて

    コネクションプーリングについて、わかっていないことが多すぎたので、ちょっとだけ調べたことをメモで残しておきます。 今はまだ触りレベルしかわかっていなのいので、もう少しちゃんと分かるようになりたい! 😀 [スライド] データベースの羅針盤 コネクションプーリングを調べている過程で偶然見付け足資料 『データベース技術の羅針盤』。 とにかくわかりやすくて、俯瞰的にDBの業界を知ることができる資料。すばらしすぎる。 🎂 コネクション・プーリングとは?DBのコネクションを一定数確立しておいて、それを使いまわす手法のこと。 DBへの接続に必要となるオーバーヘッドをカットしてWeb/DBの双方の負荷を下げる。 また、WebとDBの接続を使いまわすことで同時接続数を節約する。 用意した、コネクション数を超えたアクセスは、コネクションに空きがでるまで待たされる。 以下はOracle関連の話ですが、基

    DBの基礎 - コネクションプーリングについて
  • 主キーはインデックスではない - 設計者の発言

    仕事柄、奇妙なDB構造を目にすることが多い。どういう発想からそんな設計がされるのかを理解したいと思っていたのだが、モデラー仲間の秋里さんが先日うまい指摘をした。「主キーをインデックスみたいなものと勘違いしているからではないでしょうか」。インデックス(キー)というのは、レコードの並び順を規定するキーのことだ。 たしかに思い当たる節がある。「こんな順にレコードが並んでいれば処理上都合がよさそうだ」という考えで主キーが設定される。さらに主キーはユニーク制約でもあるので、重複が起こらないように「多め」に項目を突っ込んでおく。つまり「ユニーク制約をともなう代表的インデックス」程度に主キーが理解された結果として、グダグダなDB構造が出来上がるのではないか。 じっさい、昔こんなことがあった。{a,b,c,d}の複合主キーをもつテーブルXがある。ところが、別のテーブルYからテーブルXの特定レコードにアクセ

    主キーはインデックスではない - 設計者の発言
  • Rails の Date, Time 拡張 - happy lie, happy life

    ActiveSupport による Date, Time クラスの拡張まとめ。バージョンは 2.0.2 準拠。ソースを読んで script/console で動作確認を行っています。 相互置換 Date でも Time でも、それぞれ to_time および to_date で相互に置換できます。 必要であれば to_datetime で DateTime 型への変換も可能です。 to_s の拡張 to_s に引数をつける事で、所定の形式で出力してくれます。 Time.now.to_s(:db) => "2008-2-23 17:49:29" 引数と出力の対応は以下のとおり。 Time 引数出力 :db%Y-%m-%d %H:%M:%S :time%H:%M :short%d %b %H:%M :long%B %d, %Y %H:%M :long_ordinallambda { |time

    Rails の Date, Time 拡張 - happy lie, happy life
  • PostgreSQLのメモリ管理 | Everyday Deadlock

    この記事は PostgreSQL Advent Calendar 2012 の13日目の記事です。 昔からデータベースエンジン関係の研究をしているうちの研究室 では、「PostgreSQLを使う」というとPostgreSQLのコードをいじってTPCベンチマークを走らせることを指すので、未だにSQLとか書けなくて困ることが多いのですが、幸か不幸かPostgreSQLのソースコードはそこそこ読めるようになりました。 そんなわけで、PostgreSQLのソースコードの中でも、今回のAdvent Calendarのネタとしてメモリ管理の部分について紹介します。 これからPostgreSQLのコードを読んでみたいという人にとっては、コードのどの部分を読んでも必要となる知識なので、割と役に立つとおもいます。 【宣伝】大晦日にデータベースの同人誌コミケで売ります 題に入る前にいきなり宣伝で恐縮ですが

  • DBIx::TransactionManager の目的と、その使用法について - tokuhirom's blog

    おはようございます。 DBI では当たり前のように $dbh->do('BEGIN') と $dbh->do('COMMIT') をつかえばトランザクションがつかえるわけですが、なぜ DBIx::TransactionManager のようなものが必要になったのでしょうか。 それは勿論、DBI で直接 transaction をとりあつかうと問題が発生するケースが存在するからです。 トランザクションと RAII一番おおきいのは、トランザクションが中途半端な状態になってしまうことを阻止することです。たとえば、以下のようなケースでは、おかしなことになってしまいます。 my $dbh = DBI->connect(...); for (@stuff) { eval { $dbh->do("BEGIN"); $dbh->do(q{INSERT INTO t1 (v) VALUES (?)}, $_

  • はてなブログ | 無料ブログを作成しよう

    プロジェクトマネジメントで娘の夏休みの宿題炎上を防止しました 娘の夏休みの宿題プロジェクト炎上 8歳9歳の娘が朝から泣きわめいていたので、何ごとかと思い話を聞いてみました。泣きじゃくっていたので要領を得なかったのですが、まとめると以下みたいでした。 「宿題やったのに、ママがテレビを見せてくれない。自分は頑張った…

    はてなブログ | 無料ブログを作成しよう
  • 1