タグ

DBに関するhokorobiのブックマーク (25)

  • @nippondanji 氏の「データベース設計徹底指南!!」は神プレゼン!脅威の主義主張の一貫性保証は DB エンジニアの鏡だった件! - #garagekidztweetz

    ツイート今日は、第 1 回のSQL アンチパターンの回から良コンテンツを提供しまくりなエンバカデロ・テクノロジーズさん主催の第 3 回 DB エンジニアのための勉強会に参加してきました。 今回は 漢(オトコ)のコンピュータ道で有名な漢の中の漢、 @nippondanji 氏がデータベース設計を徹底指南してくれるということで、元々 DB エンジニアがバックグランドのわたしとしてはいかないわけにはいかんだろう、と喜び勇んでいってきました! 内容はというと下記の概要をカバーする内容でした。 リレーショナルデータベース(以下RDB)は登場してからかなりの時間が経っています。その名が示すように、RDBはリレーショナルモデルをベースに考案されたソフトウェアです。しかしながら、未だに現場ではRDBが使いこなされているとは言いがたく、リレーショナルモデルへの理解も進まず、誤った常識が跋扈しているのが現状で

    @nippondanji 氏の「データベース設計徹底指南!!」は神プレゼン!脅威の主義主張の一貫性保証は DB エンジニアの鏡だった件! - #garagekidztweetz
    hokorobi
    hokorobi 2013/12/01
    うちで使っているのはクロージャーテーブルモデルなのかな? 入れ子集合モデルにすると良くなるのかな~と思っていたけど、あれはあれでありなのか? たぶん、そんな綺麗になっていなかったはず。
  • Data Models

    Data Models: A Comprehensive Guide to Structuring Information for Optimal Insights and Decision-Making In the realm of data management, the use of effective data models plays a pivotal role in organizing and representing information in a structured and meaningful way. Data models serve as the blueprint for databases, facilitating efficient data storage, retrieval, and analysis. This article delves

    Data Models
    hokorobi
    hokorobi 2012/11/07
  • Clojureの作者が作ったデータベースDatomicが凄い

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

    hokorobi
    hokorobi 2012/03/11
  • サロゲートキーは強制されるべきものではない - 設計者の発言

    複合主キーに代えてサロゲートキー(単独主キーの代替キー)を導入すべきかどうか。それはDB設計上の重要な判断事項である。なにしろレコードのアイデンティティである主キーの設定にかかわる問題だ。さまざまなメリットやデメリットを考慮してそれは判断される。その結果、サロゲートキーを導入することもあるし、しないこともある。 ところが、サロゲートキーを強制する(あるいはサロゲートキーを導入しないと開発しにくい)開発基盤がいくつか存在する。具体的には、全テーブルの識別子が"ID"等のフィールド名を持つ単独主キーであることが求められたりする。私に言わせれば、そういう開発基盤は「大盛を強制する牛丼屋」である。メニューにあるはずの「並」を頼むと、あれこれイヤガラセをされる牛丼屋。 この問題に関連して、「サロゲートキーを使わなかったから、ひどい目にあった」という開発者の声を聞いたことがあるかもしれない。心配はいら

    サロゲートキーは強制されるべきものではない - 設計者の発言
    hokorobi
    hokorobi 2012/01/31
  • カヤック流ソーシャルアプリの作り方 インフラ編 - KAYAC engineers' blog

    入社4年目にもなってtech.kayac初登場のせいです。 ブログ書けプレッシャーにとうとう屈する時がきました。 これで夢にkyo_agoが出てうなされなくてすみます。(彼はtech.kayacの尻たたき担当でした) 先々月「ぼくらの甲子園!熱闘編」というゲームをモバゲー内にてリリースしました。 これは去年リリースした「ぼくらの甲子園!」の続編です。 モバゲーユーザの方、是非遊んでみてください。 今回はこの「ぼくらの甲子園!熱闘編」がどういうインフラ構成になってるか紹介したいと思います。 注) 題名に「カヤック流」とはつけましたが、カヤックでは多様性を善としている風潮があり、 ゲームによってインフラの構成が違うどころか、利用しているプログラミング言語すら違います。 なので全てのゲームがこのような構成になってるわけではありません。 前提 今回のインフラ構成を決めるに至って考慮した点は「ラクに

    カヤック流ソーシャルアプリの作り方 インフラ編 - KAYAC engineers' blog
  • グーグル、「Google Cloud SQL」を発表。Google App EngineにMySQLをベースにしたリレーショナルDBを追加

    グーグルは同社のクラウドでリレーショナルデータベース機能を利用できるサービス「Google Cloud SQL」を公開しました。Google Labsの扱いで、限定プレビューとなっています。 グーグルGoogle Cloud SQLを次のように紹介しています。 By offering the capabilities of a MySQL database, the service enables you to easily move your data, applications, and services into and out of the cloud. (略) To ensure that your critical applications and services are always running, Google Cloud SQL replicates data to

    グーグル、「Google Cloud SQL」を発表。Google App EngineにMySQLをベースにしたリレーショナルDBを追加
  • 作るプログラムの機能や性能で勝負したい。そうだ、データベースを勉強しよう - きしだのはてな

    さて、アルゴリズムの勉強のしかたと、ラムダ計算の勉強のしかたの目星をつけました。 アルゴリズムの勉強のしかた - きしだのはてな ラムダ計算の勉強のしかた、プログラム意味論 - きしだのはてな これでここで書いたプログラムの理論の基礎は勉強できたことになるんじゃないかと思います。 プログラムの理論とはなにか - きしだのはてな ところで、プログラムの勉強地図としてこういう図を書きました。 で、ハードウェアまわりについても、プロセッサを支える技術やネットワークはなぜつながるのかでひととおり勉強したとしましょう。 じゃあ次は、アジャイルか?テストか?UIデザインか?となるわけですが、やはりプログラマなら、プログラムの作り方や使いやすさの前に、作るプログラムの機能や性能で勝負したいじゃないですか。 いい感じに関数が分割できるよとか、読みやすい名前がつけれるよとか、効率よく仕事して定時に帰れるよと

    作るプログラムの機能や性能で勝負したい。そうだ、データベースを勉強しよう - きしだのはてな
  • 削除フラグのはなし

    Query Optimization with MySQL 5.7 and MariaDB 10: Even newer tricksJaime Crespo

    削除フラグのはなし
    hokorobi
    hokorobi 2011/08/10
    ON DELETE CASCADE とか知らなかった。安易に TRIGGER 使っちゃってる気がするな。
  • MongoDBを半年運用してみた(のフォロー) - matsukaz's blog

    某社との合同勉強会のLTで発表したMongoDBを半年運用してみたが、えらいはてブされててびっくり。。。あのままだとMongoDBは絶対使わないって結論になっちゃいそうなので、自分をフォローする形でエントリを書きたいと思います。 資料はこちら。 Mongo DBを半年運用してみた View more presentations from Masakazu Matsushita コネクションエラー多発 これは、7月にmongosの場所がmongodからSocketサーバ/Webサーバ/管理サーバに移動した件と関係しています。 まず、Socketサーバ/Webサーバ/管理サーバともにJavaで実装されているので、MongoDBへの接続はJavaの公式ドライバーを利用しています。当初のドライバーの利用方法は、 // Shard1, Shard2, Shard3のPRIMARYと同居してるmong

    MongoDBを半年運用してみた(のフォロー) - matsukaz's blog
    hokorobi
    hokorobi 2011/07/30
  • 主キーのナチュラル⇔サロゲート問題 - b6note

    についてひとこといっておくか、みたいな。 複合主キーを避けるべき理由 http://d.hatena.ne.jp/torazuka/20110713/pk 今回これを書きながら、色々考える機会になりました。 ありがとうございました>id:torazuka さん 自分のぶこめ http://b.hatena.ne.jp/akitsukada/20110715#bookmark-50842882 複合主キー、ここでいう「ナチュラルキー」は論理設計とか分析モデルのときにデータの意味をはっきりさせるために抽出し、物理設計/実装段階で物理的制約や要件に応じてサロゲートキーをつければいいと思うと書いたんだけど、何しろ100文字ではちょっと足りないので もうちょっと自分の考えを補足 わたしの考え まず自分の立場は、上記のブコメを展開して データモデリング、分析、論理設計の段階ではID(サロゲートキー)を

    主キーのナチュラル⇔サロゲート問題 - b6note
    hokorobi
    hokorobi 2011/07/17
  • 複合主キーを避けるべき理由 - 虎塚

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

    複合主キーを避けるべき理由 - 虎塚
    hokorobi
    hokorobi 2011/07/17
    データを部分的に本番環境から検証環境へコピーしたいような場合、サロゲートキーを使っていると本当に移したいデータに関連するデータも移さないといけないから大変かな? 既存のデータとの整合性も気にしないと。
  • サロゲートキーと複合主キー | DBFlute

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

    hokorobi
    hokorobi 2011/07/17
    サロゲートキーの恩恵は実感しないとわからなそう。そういえば、前回のシステム変更で、すべて複合キーだった状態から一部サロゲートキーへ変更されていたな~。
  • データベース設計で派生関係は難しい - プログラマの思索

    @t_wadaさんが、データベース設計の素晴らしい資料をリンクしていたのでメモ。 下記の資料は、MySQLでソーシャルゲームDB設計のお話らしいが、データモデリングの設計ノウハウが秀逸。 気になった点をメモしておく。 理解できたことをラフなメモ書き。 【元ネタ】 Twitter / Takuto Wada: 素晴らしい資料。"「スキーマ」「トランザクション」「インデックス」はもっと評価されるべき" / ソーシャルゲームのためのデータベース設計 http://htn.to/PzrnbR 【1】可用性や整合性に関する要求が意外と多い たとえ、SNSゲームであろうが、課金体系になるとお金が絡むため、ユーザの要求のレベルも上がるし、事業者の責任も大きくなる。 データモデリングはアーキテクチャ設計につながる。 【2】派生関係 データベース設計(DOA)でも、派生関係(継承関係)はオブジェクト指向

    データベース設計で派生関係は難しい - プログラマの思索
    hokorobi
    hokorobi 2011/01/18
    駄目だ理解できない。
  • ソーシャルゲームのためのデータベース設計

    ・データベース的な観点でのソーシャルゲームの特徴 ・データモデル ・ソーシャルゲームに従来型RDBMSを使うべきか、�流行りのNoSQLで行くべきか ・負荷対策 (アーキテクチャ面) ・負荷対策 (ツール面) ・インフラエンジニアのキャリアについて

    ソーシャルゲームのためのデータベース設計
  • DBの「トランザクション分離レベル」が必要な理由  (PostgreSQLで,ファントム・リードを防止すべきサンプル事例) - 主に言語とシステム開発に関して

    データベースには,「トランザクション分離レベル」というものがある。 以下では,それが なぜ必要なのか? デフォルトのレベルでは,どうして駄目なのか? PostgreSQLでは,どうやってレベルを変更・確認するのか? などを取り上げる。 トランザクション分離レベル トランザクション分離レベルとは: 複数のトランザクションが同時に実行された場合に、他のトランザクションからの影響がどのくらい「分離」するか,のレベル。 ANSI規格では,4つのレベルがある。 READ UNCOMMITTED (一番低い) READ COMMITTED REPEATABLE READ SERIALIZABLE(一番高い) 徹底比較!! PostgreSQL vs MySQL 第3回:トランザクションの比較 http://thinkit.co.jp/free/article/060... トランザクション処理に詳しく

    DBの「トランザクション分離レベル」が必要な理由  (PostgreSQLで,ファントム・リードを防止すべきサンプル事例) - 主に言語とシステム開発に関して
    hokorobi
    hokorobi 2011/01/05
    トランザクション分離レベルは初耳だった。
  • データベースの差分表示·DiffKit MOONGIFT

    DiffKitはデータベース/CSVファイル間の差分を抽出する。 [/s2If] DiffKitJava製のオープンソース・ソフトウェア。適切なデータベース管理を行っていない状態で運用を続けていると、いつの間にか開発環境と実行環境で構造の不一致がおこる。カラムの順番が違う程度ならいいが、なぜあるのか分からないカラムが出てきたりすると厄介だ。 データベースの構造不一致は様々な問題を引き起こす可能性がある。早めの対処が必要だ。そのためにはまず現状分析を行う必要があるだろう。手作業で行う必要はない、DiffKitを使えば容易に知ることができる。 DiffKitは二つのデータベース間における構造不一致を表示するためのツールだ。Diffツールのデータベース版ともいえる。特徴としてJDBCによるデータベース接続をサポートする他、CSVファイルにも対応していることが挙げられる。片方がCSV、片方がデー

    hokorobi
    hokorobi 2010/11/27
    DDLの適用を忘れているという状況が見つけやすそう。そんなことにならないように自動化するべきなんだろうけれど。
  • Java製のデータベースマネージャ·Druid MOONGIFT

    DruidはSQLやコード出力にも対応したデータベース管理ソフトウェア。 [/s2If] DruidはJava製のオープンソース・ソフトウェア。NoSQLやO/Rマッパーなどの登場によってデータベース管理の重要性が失われているように見える。だがより高速、より堅牢なシステムを構築する上で適切な設計管理は重要だろう。 テーブル情報 データベースを管理する場合、そのスキーマ情報を別なツールで設計するのが一般的だ。GUIで設計し、メンテナンスしたりSQL発行ができると便利だ。今回はマルチプラットフォームで動作するDruidを紹介しよう。 Druidはデータベースに接続し(接続しなくとも利用できる)、そのスキーマ情報を取り込むことができる。さらにリレーションの状態をビジュアル的に確認することもできる。テーブルの作成はもちろん、ビューやトリガーの作成、一覧での管理も可能だ。 E-Rビュー テーブル内の

    hokorobi
    hokorobi 2010/11/27
    ちょっと触ってみたけど、使いどころはどこだろう?
  • DBセキュリティの第2弾、アクセス・コントロールと権限管理

    データベースのアクセス・コントロール セキュリティ対策の基は、アクセス・コントロール(アクセス制御)と、ユーザーの権限管理です。データベースには、一般によく知られている公開情報に加えて、個人情報や機密情報も格納されています。情報資産を保護するために、「どの情報に誰がアクセスできるのか」をコントロールすることが、当たり前のこととして認知されています。 データベースに対するアクセス制御の形態には、適用する範囲に応じて、いくつかあります。以下のように分類できます。 アプリケーション側で実装する、データベースに対するアクセス制御 データベース側で実装する、データベースに対するアクセス制御 データベースに格納されている、表へのアクセス制御 表の中の、特定の行や列に対するアクセス制御 データベース自身に対するアクセス制御は、アプリケーション側で機能を実装したり、データベース管理者がポリシー設定を行い

  • グリーの大規模分散ストレージ戦略(nanofs) Vol.2 | GREE Engineering

    はじめに グリー株式会社でエンジニアをしておりますkgwsと申します。 今回は、前回に引き続き分散ストレージ(nanofs)のHTTPメソッド毎の処理を紹介させていただければと思います。 nanofsは5つのHTTPメソッド(GET、PUT、DELETE、HEAD、MKCOL)をサポートしております。今回は主なGET、PUT、DELETEの3つについてご説明させていただきます。 まずは構成のおさらい nanofsは、主に3つのプロセスで構成されております。 nanofsd(dispatcher) アプリケーションサーバからリクエストを受け取り実際に保存されているnanofsnに振り分ける 5つのHTTPメソッドをサポートしている(GET、PUT、DELETE、HEAD、MKCOL) データベース(KVS)に保存したデータの情報を送る queueに処理の指示を送る nanofsw(worke

    グリーの大規模分散ストレージ戦略(nanofs) Vol.2 | GREE Engineering
  • CassandraとHBaseの比較して入門するNoSQL

    ブログでもいろいろ解説しています。 http://little-hands.hatenablog.com/entry/top ドメイン駆動設計屈指の難解な概念「境界付けられたコンテキスト」について解説します。 --- 公式DDD Referenceの定義は以下の通りです。(和訳はだいぶ意訳しています) bounded context A description of a boundary (typically a subsystem, or the work of a particular team) within which a particular model is defined and applicable. 境界付けられたコンテキスト 特定のモデルを定義・適用する境界を明示的に示したもの。 代表的な境界の例は、サブシステムやチームなど。 まぁなかなかよくわからないですよね。DDD

    CassandraとHBaseの比較して入門するNoSQL