タグ

databaseに関するkwryのブックマーク (80)

  • Go database/sql tutorial

    The idiomatic way to use a SQL, or SQL-like, database in Go is through the database/sql package. It provides a lightweight interface to a row-oriented database. This website is a reference for the most common aspects of how to use it. Why is this needed? The package’s documentation tells you what everything does, but it doesn’t tell you how to use the package. Many of us find ourselves wishing for

  • http://kfly8.github.io/yapc/20140830_social_game.html

  • 分割と整合性と戦う

    Web Framework Benchmarksと Perl の現状報告会 YAPC::Asia Tokyo 2014 LT

    分割と整合性と戦う
  • DB設計の難しさ

    今日は徒然なるままにDB設計について思っていることを並べてみようと思う。 ようやくWEB+DB Pressの次号の原稿を書き終えた。2年間の連載であるが、来年はプライベートが忙しくなる予定なので、連載はこれにて終了とさせてもらうつもりである。 「なぜ人はリレーショナルデータベースを使いこなせないのか」 このところ執筆や講演を通じてリレーショナルモデルについて説明する機会を色々頂いているが、それらの活動の根源となっているのが、この素朴な疑問である。その疑問をパワーにしてこれまで活動を行なってきた。 現時点での自分の回答は「データベース設計が難しいから」である。もちろんリレーショナルモデルそのものの難しさというのもあるが、それよりは「適切な使い分けができていない」ということが大きいように思う。言葉を変えると、リレーショナルモデルを適用すべきデータとそうでないデータの判断ができていないからDB

    DB設計の難しさ
  • IDの設計についてのさらに突っ込んだ議論

    今日も前回に引き続きデータベース設計の話をする。今回の話で一旦データベース設計については筆を置くつもり(ブログ書いてないで原稿書けよ>俺)であるが、その前に話をすっきりさせて置きたいと思う。最後を飾るテーマはIDの設計である。 数字しかないのに意味を含んだID前回のエントリを見ていただいた方から、次のような構造を持った学籍番号があるというフィードバックを頂いた。 全部数値で"入学年度下2桁"+"学科コード"+"学科内のあいうえお順の順位" このようなルールで割り当てた学籍番号を、単なる数値として扱うのであれば大きな問題はない。これは数値しか含まれていないので、SQLのデータ型としては単に数値型を使えば良いだろう。だが、学籍番号から入学年度を判断する、あるいは学科を判断するといった用途で使われるのであればやはり適切ではないといえる。リレーショナルモデルの観点だけからではなく、IDとして適切で

    IDの設計についてのさらに突っ込んだ議論
  • データベース設計徹底指南

    DBエンジニアのための技術勉強会(第3回)で使用した資料です。主にリレーショナルモデルと正規化について解説しています。リレーショナルモデルの限界について正しく認識してこそ、リレーショナルモデルを理解したと言えると思います。

    データベース設計徹底指南
  • データベースのmasterとslaveの使い分けの話。2014年版 - Hateburo: kazeburo hatenablog

    社内で少し話題になったので。 運用上の話はfujiwaraさんの MySQLをmaster:slave=1:1構成にして参照をslaveに向けるのがなぜ良くないか - 酒日記 はてな支店 MySQLで参照の負荷分散を行うslaveは3台から構成するのがよいのでは - 酒日記 はてな支店 をみてください。 最近、新しくサービスができたり、新規機能でデータベースを追加する際には必ず全ての参照をmasterに向けてもらっています。理由は上記のエントリを読んでください。このような構成が取れるのはもちろん性能的にそれで問題ないからです。 新しいハードウェアに、設定されたMySQL、問題のないように書かれたSQLであれば、数千QPSは余裕に、また少し頑張れば数万QPSを一台で賄えます。なので大体のサービスはmaster一台で十分です。 さらにこの考え方を進めて、Webアプリケーションの中で sub d

    データベースのmasterとslaveの使い分けの話。2014年版 - Hateburo: kazeburo hatenablog
  • コネクションプールについて

    「コネクションプールがなぜ必要か?」 まず上記の設問自体がおかしくて、コネクションプールが必要(あるいは適している)場面もあれば、まったく不要である場面もある。必ずしもコネクションプールは必要ではない。コネクションプールにはメリデメが存在する。銀の弾丸ではない。 コネクションプールという言葉から始まってしまうとRDBMSとかのイメージが付きまとってしまうが、これはもう少し抽象化して考えると、オブジェクトプールと呼ばれるデザインパターンのひとつとして捉えることもできる。 オブジェクトプールのメリットは大きく分けて以下の2つ。 ・初期化コストや廃棄コストが高いオブジェクト(データベースのコネクションやスレッド)を再利用可能にすることにより、レイテンシ、スループットやシステム負荷等を改善する ・システム中で使用されるリソース数の上限をコントロール可能にする。 ウェブのシステムのように、クライアン

    コネクションプールについて
  • そろそろ履歴データについて真面目に考えてみていいんじゃないの - iakioの日記

    WEB+DB PRESS Vol.75の「理論で学ぶSQL再入門/履歴データとの上手なつきあい方」が面白かったと感想を書こうと思っていたらもうVol.76が出そうなのでいい加減慌てて書きます。 さてこの記事では、リレーショナルモデルが苦手とするデータ構造の1つとして履歴データを挙げています。 もしかすると「履歴データ」であるということを気づかずにデータベースの設計、クエリの記述をしたことがあるかもしれません。 この記事ではショッピングサイトの価格表を例としています。 価格表が常に現在の価格のみを扱うのであれば問題ありませんが、ある期間に価格を変えたことも価格表に含めるのであればそれは「履歴データ」となります。記事から一部引用するとこんな感じ item price start_date end_date 懸垂マシーン 18000 2010-01-01 2011-12-31 懸垂マシーン 20

    そろそろ履歴データについて真面目に考えてみていいんじゃないの - iakioの日記
  • 【チラ裏】あなたは本当にそのデータストアが好きで使うんですか? - oranie's blog

    チラシの裏的な雑記です。 サービスに新しいデータストアを選ぶ際にこの辺を情熱を持って説明してくれる人が好き、という話です。 そのデータストアを使う理由はなんですか?みんなが使い慣れている物から変える理由は「有名な会社が使っていて^^」「他のチームが使っていて^^」とかではなくて、既存の物では解決出来ない問題を解決するアプローチになっていますか? もし単純にキャッチアップしておきたいというレベルなら、あなたの趣味で作るシステムで運用する、では欲求を満たせませんか? 同じようなプロダクトは他にもあると思いますが、そのプロダクトで無ければいけない理由はなんですか? まだ新しいプロダクトだった場合、あなたはそのコードを読んで、バグを報告して、必要であればパッチを書く覚悟を持っていますか? あなたはチーム内でそのプロダクトの第一人者になる、という覚悟がありますか?他のメンバーへの啓蒙や情報共有を率先

    【チラ裏】あなたは本当にそのデータストアが好きで使うんですか? - oranie's blog
  • サロゲートキーと複合主キー | DBFlute

    一方で、Webサービス系などで論理設計と物理設計をもう一緒くたにやっていくような場合は、 正規化の論理に目の前にあるサロゲートキーを含めないようにすることが大切で、モデリングはナチュラルキーを基軸に考えていくとよいでしょう。 サロゲートキー (代理キー) サロゲートキー + (複合)ユニーク制約 ナチュラルキーをPKにせず、例えば連番となるようなカラムを用意して、それをPKにします。 これがサロゲートキーと言われるものですが、ナチュラルキーには別途ユニーク制約を付与する というのを忘れてはいけません。 ここでは、ナチュラルキーにユニーク制約を付けずにサロゲートキーだけを導入する方式は、業務的・実装的に意味はないと考え、ここでは取り扱いません。 議論の対象にすらしません。ユニーク制約を付けることで業務的なユニーク性を保ちつつサロゲートキーの恩恵を得ることができ、同時にナチュラルキーを明示する

  • 複合主キーを避けるべき理由 - 虎塚

    データベース設計の話をしていて、「連番の主キーは業務上意味のないデータだから、テーブルに持たせるのはムダだ。複合主キーにするべき」という意見を聞く機会がありました。 脊髄反射で「ないわー」と思ったものの、理由を上手く説明できなかったので、改めて考えてみました。 その結果、次のような結論に至りました。 単一の連番カラムによる主キーと、複合カラムによる主キーとで迷ったら 実装をシンプルにし、業務変更の影響範囲を小さくするために、複合主キーを避ける というわけで、調べたことや考えたことをメモしておきます。# 間違っている部分があれば、教えていただけると嬉しいです。 (2011/07/25 追記)複合主キーとサロゲートキーについては、要件やシステムに依存して多様な判断がありうると思います。にもかかわらず、「避けるべき」というタイトルにしたのは極端でした。申し訳ありません。ご指摘下さった皆さん、あり

    複合主キーを避けるべき理由 - 虎塚
  • 本番環境のDBを手修正するとき - tsucchi’s diary(元はてなダイアリー)

    間違いなく、バッドノウハウだけど、これを聞いたときは目から鱗だったのでメモメモ。 番環境の DB を直接いじることがあるとします。 Navicat とか、MySQL Query Browser とか、pgadmin とか、Oracle SQLDeveloper とか、そういうツールが使えればあんまり気にしないでも良いかもしれない。 でも、セキュリティポリシー(笑)で、データベースへのネットワーク接続が許可されていない、ということがありえます。頼れるのは、由緒正しきコマンドラインインターフェースのみ。 で、こういうときのやり方なのですが、 Start Transaction; select 文を叩いて、where 句を決める update/delete を発行(上の where 句を使うこと) もいっかい 同じ select 文を叩く データチェック うまく行ってれば Commit; 失敗

    本番環境のDBを手修正するとき - tsucchi’s diary(元はてなダイアリー)
  • 第1回 大規模データではRDBMSのどこがボトルネックになるのか? | gihyo.jp

    RDBMSはオワコン? 「右を向いても左を向いても“⁠ビッグデータ⁠”というキーワードが闊歩する時代に、いまさらRDBMSの話題?」 連載のタイトルを見てそう思われたかもしれません。 「ディスクベースのRDBMSはオワコン、これからは○○(お好きなアーキテクチャを入れてください)の時代だ!」 とおっしゃる方もいるかと思います。 しかし、むしろ多くの企業がビッグデータに注目しているおかげで、RDBMS側でも大規模データを取り扱うニーズが増えています。 大規模データを取り扱う時にボトルネックとなる5つのポイント 数百ギガバイトといったレベルのRDBMSであれば、現場のエンジニアの方にとってはあたりまえの世界でしょう。しかし、テラバイトを大きく超えたデータを扱う場合には、ボトルネックの傾向が変化するのはご存じでしょうか。 次の図は、RDBMSにまつわるボトルネックを示したものです。 図1 大規

    第1回 大規模データではRDBMSのどこがボトルネックになるのか? | gihyo.jp
  • pixivのデータストア/キャッシュ戦略 その3 - pixiv engineering blog

    HHKB Professional Type-Sが欲しいインフラ兼ソフトウェアエンジニアのbokkoです。 普段はHHKB Proの日語配列キーボードを愛用しています。英語配列は苦手です。このことを同僚のエンジニアに言うとジト目で見つめられ・・・睨みつけられること請け合いです。 連載の最後となる今回はpixivのデータストア/キャッシュ戦略を支える周辺ミドルウェアについて解説していきます。 memcachedからKyotoTycoonへ移行した際に発生した問題 前回の記事の最後にもあったようにpixivではAPの数だけあったmemcachedへのリクエストを少数のKyotoTycoonにまとめたことで一部のKyotoTycoonサーバへのTCPコネクション数が爆発してKyotoTycoonサーバのCPUやメモリリソースには余裕があるのにネットワークで詰まるという問題が起こりました。 元

  • pixivのデータストア/キャッシュ戦略 その2 - pixiv engineering blog

    先月末にwww.pixiv.netのバージョン管理をSubversionからGitに移行できてホッとしているインフラ兼ソフトウェアエンジニアのbokkoです。 pixivのSubversionリポジトリには\( ^ o ^ )/ディレクトリなるものが存在していて、開発が終了したプロジェクトやもう使われなくなったソースコードはremoveされるのではなく、 この\( ^ o ^ )/ディレクトリにmoveされます。 www.pixiv.netもGitに移行した後、{trunk,branches,tags}のすべてを\( ^ o ^ )/へmoveしましたが、あまりにも巨大過ぎて「svn move -> commit」が完了するのに1時間半かかりました。おそらく僕の人生の中で最も時間のかかったコミットとして全僕の中で語り継がれるのではないかと思います。 最近は弊社でも「最初に触れたバージョン管

  • スキーマレスについてちょっと考えてみた - As a Futurist...

    このエントリはたぶんに煽り要素を含めていますが、意図的なものです。僕は NoSQL は素晴らしいと思います。 さて、NoSQL なんて言葉に踊らされてる人は置いといて、最近 RDBMS 以外のデータストアというのが色々でてきてます。今時点で見渡す限りにおいては、安定性、耐障害性、パフォーマンス、情報量、開発者の慣れ、全体のバランスで言えば RDBMS にかなうものはないわけですが、今後どうなっていくかはまぁ分かりません。 一方で、RDBMS がどうしても苦手とする分野というのは存在します。例えば 1 サーバに収まりきらない様な大容量データに対するバッチ処理、リアルタイムなランキング、アクティビティなどのフィード情報、そして構造化されたデータの取り扱い。何でもかんでも NoSQL に置き換えればいいなんて考えは現時点では到底受け入れがたいですが、例として挙げた様なピンポイントな部分ではそれに

    スキーマレスについてちょっと考えてみた - As a Futurist...
  • Clojureの作者が作ったデータベースDatomicが凄い

    プログラミング言語Clojureの作者Rich Hickey氏率いるClojure HackerのチームがDatomic(デートミックと発音するらしい)というデータベースをリリースしました。これが何やらとてつもないです。10年先を行ってる技術じゃないでしょうか。 まだ番サービスは始まっていませんが開発環境用のライブラリが配布されています。 Datomicは斬新なアーキテクチャなので一言で説明するのはとても難しいです。 私が理解できたことを簡単に説明します。 2014/1/20追記 ライセンスモデル、サポートストレージ、サービスとしてではなく独立して使用する形になるなど記事作成時の内容から色々変更が合った部分を更新しました。 変更不可なAppend-onlyデータベース 従来のデータベースで、あるレコードを変更するというのはそのレコードに対応した場所があり、そこのデータを書き換えるというこ

  • DB のスキーマ設計とかの話 - tsucchi’s diary(元はてなダイアリー)

    はじめに ここ1年くらい、わりとまじめに DB 設計やってみて、うまくいったもの、失敗したものなど、いろいろ出てきました。その知見(というほどものじゃないけど)を書いてみようかなー、と思います。 僕は基的にアプリ屋さん(+運用)なので、データモデルの綺麗さよりもアプリからの使いやすさ(+運用しやすさ)を重視してると思います。 前提 業務系のアプリケーションで、DBMySQL を想定しています。*1。Web 屋さんとは違って、「COUNT したら返ってこない」、「ALTER TABLE が半日たっても終わらない」みたいな恐ろしいテーブルはありません。(とはいえ、データ量は GB 単位で、それなりにでかくて困ってるテーブルとかもあったりします) なお、アプリケーション更新のための停止が許されていて、スキーマの変更はある程度定期的かつ自由に可能となっています。*2 主キーについて いかな

    DB のスキーマ設計とかの話 - tsucchi’s diary(元はてなダイアリー)
  • 削除フラグのはなし

    ソフトウェアパッケージベンダーのためのクラウドソリューション「SQL Anywhere OnDemand Edition」

    削除フラグのはなし