タグ

dbに関するKatsujiのブックマーク (9)

  • 「外部キーを張らない」設計への雑感 - スコトプリゴニエフスク通信

    僕はOracleRDBMSとかSQLを勉強した人間なので、絶対に外部キーを張り、可能であればチェック制約もかけて、絶対に不正なデータは入れさせたくないと思う人間なのだが、LAMPサーバーを並べてスケールさせるっていう今時のサイトでは、外部キーを張らない設計の方が主流らしい。・・・当!?確かに、アプリケーションやORMで頑張れば、外部キーを張るメリットが消え、外部キーを張るデメリットだけが残り、そしてMySQLRDBMSではなく、SQLをサポートする単なるストレージになるだろうが・・・ちなみにSQLAlchemyならばテーブル定義から外部キーを消しても、mapperの定義で明示的に示してやれば、いままで通りのコードが動くはず。以下は「飼い主(Owner)と犬(Dog)の間に一対多の関係がある」という場合の例。 # -*- coding: utf-8 -*- from sqlalchem

  • BrewersCapTheorem - ブリュワーの CAP 定理

    BrewersCapTheorem - ブリュワーの CAP 定理 目次 この文書について ブリュワーの CAP 定理 - Amazon と eBay のクールエイド ブリュワーの(CAP)定理 一貫性 (Consistency) 可用性 (Availability) 分割耐性(Partition Tolerance) 定理の重要性 図解で証明 CAP と折り合う 1. 分割耐性を諦める 2. 可用性を諦める 3. 一貫性を諦める 4. BASE に跳ぶ 5. 問題をかわして設計する まとめ 参考文献 ブリュワーの CAP 定理 この文書について "Brewer's CAP Theorem - The kool aid Amazon and Ebay have been drinking" の日語訳です. http://www.julianbrowne.com/article/view

  • nabokov7; rehash : key-value store に特化したWAFとか、key-value store のみでランキングを効率よく管理する方法とか

    November 15, 200912:12 カテゴリプログラミングネタ key-value store に特化したWAFとか、key-value store のみでランキングを効率よく管理する方法とか 同僚が新しい WAF(Webアプリケーションフレームワーク) を作っていて、その中で使うデータクラスの O/Rマッパーを何にするかで迷っているようだったので、こう叫んでおいた (心の中で)。 O/Rマッパーなど、SQLもまともに扱えない軟弱者があみだした不格好な補助輪にすぎない ! Webアプリケーションが重い理由の8割はO/Rマッパーのせいだ ! 漢なら SQL 直書きが当たり前 ! そうでなければ時代の流れに沿って key-value store 専用に設計すべき ! まあそんなこと言っても、現実には作業効率とか考えたら使うけどね、O/Rマッパー。 そんなことより、key-value

  • プログラム中にSQL関数を使わない3つの理由 - プログラマでありたい

    MySQLの関数の使い方で解り易くまとめている下記のエントリーについて。SQL関数は覚えていたら便利な事この上ないのですが、1点だけ賛同できないことがあります。それは、プログラム中にMySQL中の関数を使う事そのものです。 プログラムのコード量を減らす MySQL 関数 | バシャログ。 時と場合によりますが、次の3つの理由で止めた方が良いのではないかと考えます。 1.DBの負荷対策が一番コストが掛かる 2.DBがボトルネックになり易い 3.アプリケーションの保守性が下がる 1.DBの負荷対策が一番コストが掛かる 一般的に言って、DBサーバはスケールアウトし難い部分です。単純に参照系だけであれば、レプリケーション等で割合簡単にスケールアウト出来ますが、更新系までのスケールアウトを考えると中々大変です。Oracle RACのようにお金で解決する場合と、アプリレベルで負荷分散と工数を掛けて対策

    プログラム中にSQL関数を使わない3つの理由 - プログラマでありたい
  • プログラムのコード量を減らす MySQL 関数 | バシャログ。

    みなさん琉球朝顔ってご存知ですか?朝顔の中でもとてもたくましい事で有名な種類ですが今年の夏から我が家の庭に植えた所、未だに花が咲き誇っていて季節外れな事この上ありません、、、なんか雑草化すると駆除は困難だとか、、、 さて今日は知っておくと何かと便利な MySQL 組み込みの関数たちをご紹介しようと思います。プログラムサイドに記述すると数行に及ぶ処理が、SQL ベースで行うとほんの数文字で済んでしまいます。 DATE, DATE_FORMAT 日付や時刻関連の関数はとても充実していますが、中でもよく使うのはこの辺りでしょうか。こんなレコードがある時、、、 mysql> SELECT created FROM users; +---------------------+ | created | +---------------------+ | 2009-06-05 13:33:26 | |

    プログラムのコード量を減らす MySQL 関数 | バシャログ。
  • Efficient data transfer through zero copy

    IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.

    Efficient data transfer through zero copy
  • SQLの暗黙の型変換はワナがいっぱい

    補足 この記事は旧徳丸浩の日記からの転載です。元URL、アーカイブはてなブックマーク1、はてなブックマーク2。 備忘のため転載いたしますが、この記事は2009年9月24日に公開されたもので、当時の徳丸の考えを示すものを、基的に内容を変更せずにそのまま転載するものです。 補足終わり このエントリでは、SQLにおいて「暗黙の型変換」を使うべきでない理由として、具体的な「ワナ」をいくつか紹介します。 数値項目に対するSQLインジェクション対策のまとめにて説明したように、RDBの数値型の列に対してSQLインジェクション対策をする方法として、以下の三種類が知られています。 バインド機構を用いる パラメータの数値としての妥当性確認を行う パラメータを文字列リテラルとしてエスケープする このうち、方法3を使うべきでない説明の補足です。具体的には、方法3には、「暗黙の型変換」が発生しますが、それが思わ

    Katsuji
    Katsuji 2009/09/25
    パフォーマンスで痛い目見たことがあるので再度勉強しなおす
  • ウノウラボ Unoh Labs: RDBで階層構造を扱うには?

    yukiです。ダイエットを始めて3kg減ったと思ったら、風邪を引いて見事に1kg増量。 運動しないと駄目ですね。あと残り20kg、道のりは遠いです。 さて今回は、「RDBで階層構造を扱うには?」です。 あるサイトを構築中に階層構造をもったカテゴリ構造にすることになり、どのようにDBで扱うか悩みました。 DBMySQLを採用していたので、この時点でぱっと頭に浮かんだ選択肢は以下のようなものでした。 XML-DBを利用する 親カテゴリレコードのプライマリIDを子カテゴリレコードに持たせる 親を含めた『絶対パス』を名称として扱い、取り出した後にパース ファイルシステムに同様のディレクトリ構造を作り、毎回パースする (1)のXMLDBはオープンソースのeXistやXindice、Yggdrasillなど様々な選択肢がありましたが、カテゴリのみの利用な割にメンテナンスコストが高すぎるので見送りま

  • mixi Engineers’ Blog » Tokyo Tyrantによる耐高負荷DBの構築

    連休中はWiiのマリオカートをやりまくってやっとVR7000越えたmikioです。愛車はマッハ・バイクとインターセプターです。さて今回は、分散ハッシュデータベースサーバTokyo Tyrantでmixiの最終ログイン時刻を管理するようにした時の苦労話を書きます。 ログイン処理は負荷地獄 mixiでは、全てのユーザについて、各々の最終ログイン時刻を管理しています。「マイミクシィ一覧」や「お気に入り」などの画面で、友人が近い時間にログインしていてコミュニケーションがとりやすい状態にあるかどうか確認できるようにするためです。 mixiのほぼ全てのページはログインしないと見られないページなので、ほぼ全てのページにアクセスされるたびにログイン確認が行われます。したがって、最終ログイン時刻はほぼ全てのページにアクセスされる度に更新されることになります。mixiの中で最も重いデータベースのひとつとして「

    mixi Engineers’ Blog » Tokyo Tyrantによる耐高負荷DBの構築
  • 1