Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

タグ

RDBに関するJxckのブックマーク (34)

  • Azure Cosmos DB - NoSQL and Relational Database | Microsoft Azure

    Jxck
    Jxck 2017/02/20
  • Inside Cloud Spanner and the CAP Theorem | Google Cloud Blog

    Building systems that manage globally distributed data, provide data consistency and are also highly available is really hard. The beauty of the cloud is that someone else can build that for you. The CAP theorem says that a database can only have two of the three following desirable properties: C: consistency, which implies a single value for shared data A: 100% availability, for both reads and up

    Inside Cloud Spanner and the CAP Theorem | Google Cloud Blog
    Jxck
    Jxck 2017/02/16
    Spanner における CAP 定理
  • 『理論から学ぶデータベース実践入門』の間違いを指摘する - Qiita

    『理論から学ぶデータベース実践入門』というを読んでいて、2章の論理学の説明に多くの誤りを見つけたので指摘しておく。 このはデータベースについての技術書であり、数学書ではないのでこれらの誤りがこのの価値を完全に損なうとは思わない。しかし、述語論理に基いてリレーショナルモデルを説明するという趣旨のである以上、その基礎である論理学の説明が不正確なのは大きな問題である。また著者が論理学の専門家でないなら、専門家にレビューを頼むか、最低でも適切な論理学の教科書へのリファレンスが必要ではないかと考える。 この文章は特定のを参考にしたわけではないが、以下に定評のある論理学の入門書をいくつか挙げておく。 戸田山和久『論理学をつくる』(名古屋大学出版会) 小野寛晰『情報科学における論理』(日評論社) 以下、論理学についての誤りのうち比較的大きなものを指摘する。これはすべての誤りのリストではないし

    『理論から学ぶデータベース実践入門』の間違いを指摘する - Qiita
    Jxck
    Jxck 2017/01/05
  • みんなRailsのSTIを誤解してないか!? - Qiita

    な、なるほど...!? いや、みんなちょっと誤解してるんじゃないか? よーし、お父さん、みんながSTIを使いたくなるようにちょっと頑張っちゃうぞ! STIとは STIは、単一の継承階層に所属するクラス群を、ただひとつのテーブルを使って永続化する手法です。 PofEAA Railsのドキュメントを漁ると、次のような記述が見つかります。 http://api.rubyonrails.org/classes/ActiveRecord/Inheritance.html Note, all the attributes for all the cases are kept in the same table. Read more: www.martinfowler.com/eaaCatalog/singleTableInheritance.html このリンク先は、リファクタリングで有名なMarti

    みんなRailsのSTIを誤解してないか!? - Qiita
    Jxck
    Jxck 2016/12/05
    STI は、「その DB は Rails (のロジック)を通してしか触らない」かどうかじゃないかと思ってる。
  • RDBMSが強すぎる件 - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く

    以前、「RDBMSを採用すると、無料で外部キー制約とかチェック制約とかトランザクションが付いてきてオトク!!!」という発言をしたことがあって、その考えは今もあまり変わっていない。 RDBMSは単なる便利な箱じゃなくて、データの整合性を守るための仕組みがたくさん備わっている。もちろん、これらの仕組みは「タダ」で使えるわけではなく、データモデリングを学んだり、データ構造を学んだりという「投資」の結果うまく使えるようになるものだけれど。 ところで問題(?)は、RDBMSは強すぎる、ということです。 たとえば、トランザクションの話。「質的にはトランザクション整合性である必要がなく、遅延してあとから整合性が取れてればよいような処理(つまり、結果整合性でよいような処理)」というのは、意外と多い。 多くの開発の現場では、トランザクション整合性が必要とされるか結果整合性でよいのかについてあまり考えず、「

    RDBMSが強すぎる件 - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く
    Jxck
    Jxck 2016/11/24
    わかる。でも WebApp に限るとレスポンスステータスで返したいという要請と、遅延実行した結果の特に失敗の通知方法が貧弱なので、結果整合との相性の悪さもありそう。
  • データベース12 - トランザクションと同時実行制御

    9. 例;振替送⾦ 9 (1) ⼝座Aの残⾼から10万円を引く ⼝座Aから⼝座Bへ10万円を振替送⾦ UPDATE 銀⾏⼝座 SET 残⾼ = 残⾼-10 WHERE ⼝座 = 'A'; (2) ⼝座Bの残⾼に10万円を⾜す UPDATE 銀⾏⼝座 SET 残⾼ = 残⾼+10 WHERE ⼝座 = 'B'; ⼝座 残⾼ A 20 B 5 銀⾏⼝座 ⼝座 残⾼ A 10 B 5 銀⾏⼝座 (1) ⼝座 残⾼ A 10 B 15 銀⾏⼝座 (2) 1トランザクション 10. 例;アイテムの購⼊ (1) 薬草の在庫数を3個減らす ユーザ=アリスが1個10Gの薬草を3個購⼊ UPDATE 在庫 SET 残数 = 残数-3 WHERE アイテム名 = '薬草'; (2) ユーザの所有アイテム数を3個増やす UPDATE 所有アイテム SET 所有数 = 所有数+3 WHERE ユーザ名 = 'アリ

    データベース12 - トランザクションと同時実行制御
    Jxck
    Jxck 2016/11/09
  • RDBアンチパターン // Speaker Deck

    PHPカンファレンス2016の資料です http://phpcon.php.gr.jp/2016/

    RDBアンチパターン // Speaker Deck
    Jxck
    Jxck 2016/11/04
  • アーキ部:テーブル設計をやってみよう! - そこに仁義はあるのか(仮)

    毎週金曜の定時後に弊社でアーキ部なるものが開催されています(✌'ω' ✌) スピードラーニング的に@kawasimaさんのお話を聞く会ですが、今週はテーブル設計がテーマでした! この記事がすごく良かったので、触発されてブログ書く!!! developer.hatenastaff.com お題 ↓のお題が出て、テーブル設計を考えてみるはなし。 要求仕様は以下のとおり。 ・宿の部屋は、シングルやツインのような部屋タイプが設定できます。 ・宿側で宿泊プランを設定できます。宿泊プランは適用される日付が設定できます。 ・プランには複数の部屋タイプが含まれることがあります。 ・宿側でプラン・部屋タイプ・宿泊日ごとに宿泊費の設定ができます。 ・カスタマはプラン・部屋タイプ・宿泊日を指定して宿泊予約ができます。 ・予約は会員でも非会員でも可能です。 ・また、会員・非会員に関わらず、宿をお気に入りに登録でき

    アーキ部:テーブル設計をやってみよう! - そこに仁義はあるのか(仮)
    Jxck
    Jxck 2016/09/05
    楽々ERDレッスンは良書
  • 新著が出ます:『プログラマのためのSQLグラフ原論』 - ミックのブログ

    今月下旬に、J.セルコの『Trees and Hierarchies 2nd Edition』の邦訳が刊行されます。同著者の代表作『プログラマのためのSQL 第4版』のスピンオフの一つで、RDB/SQLで木と階層構造を扱うための方法論にフォーカスしたなかなかマニア度の高い一冊です。主眼となる「入れ子集合モデル」については、私もあちこちの記事や書籍で紹介したことがあるので、ご存じの方もいるかもしれませんが、より包括的かつ理論面までカバーした格派の内容になっています。 表紙の女性はマリア様でしょうか。家の方が刊行されたときも「このおっさん誰?」という質問が相次ぎましたが、ガリレオという説が有力なようです。そう言われてみると家は『星界の報告』のような格調を感じます。書の方は、長らく定説とされてきたモデルをひっくり返そうという意味では『天体の回転について』みたいな性格もあるのですが、大型

    新著が出ます:『プログラマのためのSQLグラフ原論』 - ミックのブログ
    Jxck
    Jxck 2016/08/18
    RDB で木/階層を扱う「入れ子集合モデル」のみにフォーカスした書籍。なんとコアな。P300 越えだし kindle に期待。
  • PHPerに知ってほしいRDBの事 その3

    PHPカンファレンス関西 2016の資料です。 http://conference.kphpug.jp/2016/

    PHPerに知ってほしいRDBの事 その3
    Jxck
    Jxck 2016/08/15
  • 【DBまとめ】MySQLからPostgreSQL,SQLiteまで - Qiita

    現在、世界中で最もよく利用されているオープンソースのデータベースのひとつです。 高速で使いやすいことが特徴です。 ABOUT MySQLは非商用利用なら無償で入手して使える。 商用利用の場合、ライセンスの購入が必要(デュアルライセンス) マルチユーザ対応であるため、複数の人が同時に利用するWebアプリケーションのようなシステムに使うデータベースとして適している。 レンタルサーバーのデータベースとして使われていることが多く、数千万から数億件のレコードを取り扱っている事例も存在する YahooGoogleなどのサイトでも使用されている シンプルで速く、PHPなどとの相性が良い分、弱点としてやや機能的な面で不十分さがあるとの指摘も OTHERS 文字列の連結に+演算子や||演算子を使うことができない。文字列の連結にはCONCAT()を使う FULL JOIN句を利用できない UNION以外の集

    【DBまとめ】MySQLからPostgreSQL,SQLiteまで - Qiita
    Jxck
    Jxck 2016/08/10
  • このRDBについて私は驚くべき闇を見つけたがそこを発表するにはネットは怖すぎる

    YAP(achimon)C::Asia Hachioji 2016midの資料です。

    このRDBについて私は驚くべき闇を見つけたがそこを発表するにはネットは怖すぎる
    Jxck
    Jxck 2016/07/03
  • 変更履歴を持つテーブルの設計 - Qiita

    ある日のできごと 少し前、「ブログの記事のようなものを、履歴を残しつつ編集できるようにするにはどのようなテーブル設計が良いか?」と尋ねられたことがありました. その時, まず思いついた(というか見聞きしたことがある方法)のは以下の様な2通りの方法だった. 記事テーブルにバージョン番号を持たせる方法 記事テーブルとは別に, だいたい同じ構造の履歴テーブルを持つ方法 こられの手法のメリット・デメリットについて, すこし考えていきたいと思います. その1 記事テーブルにバージョン番号を持たせる方法 概要 この方法では, 記事テーブルは一つだけ用意し, 更新される度に新しいレコードを追加していきます. 主キーはidとなるが, これはサロゲートキーで, 当の主キーは「記事グループid + verison」の複合主キーとなっています. 記事の最終更新日時は, 最新Versionのレコードのinser

    変更履歴を持つテーブルの設計 - Qiita
  • 「外部キー Night」に参加してきた - ichirin2501's diary

    発表者として参加させていただきました。 発表資料はこちらです(自分でも忘れそうなのでブログにリンク貼っておく) 外部キー制約に伴うロックの小話 from ichirin2501 外部キー制約に伴うロックの小話 追記: 2015/08/22 ブログでも補足したほうが良いかな、と思ったので今更追記することにしました。 どういう資料? 外部キー制約で発生するロックのお話です。前提として、MySQL(5.5.28)のInnoDBストレージエンジン、トランザクション分離レベルはREPEATABLE-READ, READ-COMMITEDです。上記は検証環境ですが、MySQL5.1 ~ 5.7でも変化していない挙動のはずです。また、InnoDBのロックはインデックスレコードロックなので、インデックスに対する理解が必要不可欠です。発表時間も20分程度ということもあって、その辺りをある程度理解されてる方が

    「外部キー Night」に参加してきた - ichirin2501's diary
    Jxck
    Jxck 2015/08/26
  • Qiitaのトップページのフィードの設計 - ✘╹◡╹✘

    @ainame user.articles.preload(:comments, :stocks_count) みたいにstocks_countのようなassociationを生やしており、stocks_countの内部実装はPreloaderが弄られていてIDだけ取ってる— 内製フレームワーク (@r7kamura) 2015, 8月 23 @ainame これを抽象化するために、Article.has_many(:stocks, counter: true) みたいにすると、article.stocksとarticle.stocks_countがほぼ同じSQLで同時に定義されるようになってる— 内製フレームワーク (@r7kamura) 2015, 8月 23 @ainame それを実現している実装がこれです / k0kubun/activerecord-precount https:

    Qiitaのトップページのフィードの設計 - ✘╹◡╹✘
    Jxck
    Jxck 2015/08/24
  • 挿入と参照ロックに疲れ果てた俺たちは - ichirin2501's diary

    なかったらINSERTしたいし、あるならロック取りたいやん? from ichirin2501 www.slideshare.net 出来事 @ichirin2501 とりあえず何も考えずこの前のロックの話をSlideshareにあげてくれ!!— 柴崎優季 (@shiba_yu36) 2015, 8月 22 はじめに これは先日の社内勉強会で発表したもので、MySQLで特定の問題を解決したいときのノウハウ話です。特定の問題とは、アプリを書いてると「データがなかったINSERTしたい、あるなら排他ロックしつつ取得したい」という要望があったりします。例えば、あるユーザーアクションで初期値もパラメーターで渡されるケースで、データがないならそのままINSERT、既にデータがあるなら取得して状態に依存して更新処理を行いたい場合などです。見かけのロジックは単純に見えますが、MySQLでこれを実現しよう

    挿入と参照ロックに疲れ果てた俺たちは - ichirin2501's diary
    Jxck
    Jxck 2015/08/24
    ギャップロック
  • kamipo TRADITIONALでは防げないINSERT IGNOREという名の化け物 | おそらくはそれさえも平凡な日々

    インスパイア元→kamipo traditional (というかSTRICT_ALL_TABLES) では防げないMyISAMという名の化け物 タイトルが全てです。ピンときた方は読み進む必要はありません。 データがなかったらINSERTして欲しいけど既に入っている場合には何もして欲しくないみたいな処理をするときに、 INSERT IGNORE を使ってしまうことがありますが、 INSERT IGNORE はユニークキー制約違反だけじゃなくて、あらゆるエラーをIGNOREしてしまいます。つまりkamipo TRADITIONALすらIGNOREしてしまうのです。なので使わないほうが安全です。 様子です。 mysql> SET SESSION sql_mode='TRADITIONAL,NO_AUTO_VALUE_ON_ZERO,ONLY_FULL_GROUP_BY'; Query OK, 0

    kamipo TRADITIONALでは防げないINSERT IGNOREという名の化け物 | おそらくはそれさえも平凡な日々
    Jxck
    Jxck 2015/07/21
    2015年時点での DB の戦略は SQL に UPSERT を入れるんじゃなくて、データを append only にしようという方向に漠然と向かってる気がする。
  • RDB - 実例で学ぶ、JOIN (NLJ) が遅くなる理屈と対処法 - Qiita

    "Nested Loop Joinしか取り上げて無いのにタイトルが大きすぎないか" と指摘を頂いたので、タイトルを修正しました。Merge JoinとHash Joinのことはまた今度書こうと思います。 「JOINは遅い」とよく言われます。特にRDBを使い始めて間がない内にそういう言説に触れた結果「JOIN=悪」という認識で固定化されてしまっている人も多いように感じています。 たしかに、JOINを含むようなSELECT文は、含まないものに比べて重たくなる傾向があることは事実です。また、質的に問い合わせたい内容が複雑で、対処することが難しいものも存在します。しかし、RDBの中で一体どういうことが起きているのかを知り、それに基いて対処すれば高速化できることも少なくないと考えています。 稿では、JOINの内部動作を解説した上で、Webサービスを作っているとよく出てくるJOIN SQLを例題に

    RDB - 実例で学ぶ、JOIN (NLJ) が遅くなる理屈と対処法 - Qiita
    Jxck
    Jxck 2015/07/13
  • 実務で役立つデータベースの活用法

    18. アーキテクチャ ーーーーーーー データモデル マスタ型 P2P型 その他 リレーショナル RDB全般 pgpool2など キーバリュー Hibari Dynamo Riak Memcached Redis カラム指向 Bigtable HBase Cassandra ドキュメント指向 MongoDB CouchDB グラフ指向 Neo4J InfiniteGraph 19. アーキテクチャ ーーーーーーー データモデル マスタ型 P2P型 その他 リレーショナル RDB全般 pgpool2など キーバリュー Hibari Dynamo Riak Memcached Redis カラム指向 Bigtable HBase Cassandra ドキュメント指向 MongoDB CouchDB グラフ指向 Neo4J InfiniteGraph

    実務で役立つデータベースの活用法
    Jxck
    Jxck 2015/07/12
  • Webシステムにおけるデータベース接続アーキテクチャ概論 - ゆううきブログ

    先月投稿した2015年Webサーバアーキテクチャ序論では、Webサーバアーキテクチャを学ぶ道のりと代表的な実装モデルの概要を紹介しました。 今回は、前回同様、主に新卒Webエンジニア向けに、Webアプリケーションサーバとデータベースサーバ間の接続管理モデルと運用事情について紹介します。 データベース接続の永続化やコネクションプーリングとは何なのか、なぜ必要なのかといったことが主な話題です。 背景 データベース接続の永続化とはなにか データベース接続のオーバヘッド データベース接続の永続化手法 コネクションプーリングとはなにか コネクションプーリング: ドライバ型 コネクションプーリング: プロキシ型 コネクションプーリング全体について PostgreSQLMySQL 参考資料 まとめ 背景 2015年Webサーバアーキテクチャ序論では、Webサーバアーキテクチャの話とWebアプリケーショ

    Webシステムにおけるデータベース接続アーキテクチャ概論 - ゆううきブログ