タグ

DBに関するy_rのブックマーク (26)

  • Amazon Auroraの先進性を誰も解説してくれないから解説する - Qiita

    TL;DR; Amazon AuroraはIn-Memory DBでもなくDisk-Oriented DBでもなく、In-KVS DBとでも呼ぶべき新地平に立っている。 その斬新さたるやマスターのメインメモリはキャッシュでありながらWrite-BackでもなくWrite-Throughでもないという驚天動地。 ついでに従来のチェックポイント処理も不要になったのでスループットも向上した。 詳細が気になる人はこの記事をチェキ! Amazon AuroraAWSの中で利用可能なマネージド(=運用をAWSが面倒見てくれる)なデータベースサービス。 ユーザーからはただのMySQL、もしくはPostgreSQLとして扱う事ができるのでそれらに依存する既存のアプリケーション資産をそのまま利用する事ができて、落ちたら再起動したりセキュリティパッチをダウンタイムなしで(!?)適用したりなどなどセールストー

    Amazon Auroraの先進性を誰も解説してくれないから解説する - Qiita
    y_r
    y_r 2017/12/13
  • データベース技術の羅針盤

    PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)NTT DATA Technology & Innovation

    データベース技術の羅針盤
    y_r
    y_r 2017/07/26
  • Gist - Fertile Forest Model - The Cusp of Helix

    Fertile Forest Model [Gist] C.1: Hierarchical Data in a RDB We know that it is difficult to store hierarchical data in a RDB. The basic knowledge in order to know the difficulties, are summarized in the following link. Please read at first, because it contains important information in order to understand the fifth model. C.2: Conventional Models DB engineers around the world had been studying the

    y_r
    y_r 2017/07/07
    ツリー構造をグリッドに落とし込むのか
  • SQL: ナイーブツリーと閉包テーブルモデル - CUBE SUGAR CONTAINER

    今回のエントリは以前かいた SQL のアンチパターン「ナイーブツリー」に関する記事の続き。 blog.amedama.jp 再帰クエリをサポートしていない RDBMS で再帰的な構造のスキーマを作りたいときの解決策のひとつとして閉包テーブルモデルを扱う。 使った環境は次の通り。 $ sw_vers ProductName: Mac OS X ProductVersion: 10.11.4 BuildVersion: 15E65 $ mysql --version mysql Ver 14.14 Distrib 5.7.12, for osx10.11 (x86_64) using EditLine wrapper 下準備 まずは下準備として MySQL にデータベースを作るところまで。 今回使ったのは Mac OS X なので MySQL は Homebrew でインストールする。 $ b

    SQL: ナイーブツリーと閉包テーブルモデル - CUBE SUGAR CONTAINER
    y_r
    y_r 2017/07/07
  • SQL: ナイーブツリーと経路列挙モデル - CUBE SUGAR CONTAINER

    今回のエントリは以前かいた SQL のアンチパターン「ナイーブツリー」に関する記事の続き。 blog.amedama.jp 再帰クエリをサポートしていない RDBMS で再帰的な構造を表現するための解決策のひとつ経路列挙モデルを扱う。 使った環境は次の通り。 $ sw_vers ProductName: Mac OS X ProductVersion: 10.11.4 BuildVersion: 15E65 $ mysql --version mysql Ver 14.14 Distrib 5.7.12, for osx10.11 (x86_64) using EditLine wrapper 下準備 まずは下準備として MySQL にデータベースを作るところまで。 今回使ったのは Mac OS X なので MySQL は Homebrew でインストールする。 $ brew instal

    SQL: ナイーブツリーと経路列挙モデル - CUBE SUGAR CONTAINER
    y_r
    y_r 2017/07/07
  • 「理論から学ぶデータベース実践入門」を読破するための参考資料 - 周回遅れのブルース

    先日来、ずっと「理論から学ぶデータベース実践入門」を読んで勉強中です。 私はどちらかと言えば下流メインで DB設計に関しては意見できる程度ですが、それでもSQLは割と書く方だしDB関連書籍もいくつか読んでたので、それなりに判ってたつもりでした。だけに、読めば読むほど、今まで RDBDB設計についてどれだけ勘違いしてたのか、つくづく身につまされる思いです。むかし「1ページに1度、あなたは激しくうなずく」とかいって宣伝してるありましたが、この読んでると、5ページに1度は、「おお、そうだったのかー!」と仰け反るような記述が出てくるので、当に驚かされますね。 理論から学ぶデータベース実践入門 ~リレーショナルモデルによる効率的なSQL (WEB+DB PRESS plus) 作者: 奥野幹也出版社/メーカー: 技術評論社発売日: 2015/03/10メディア: 単行(ソフトカバー)こ

    「理論から学ぶデータベース実践入門」を読破するための参考資料 - 周回遅れのブルース
    y_r
    y_r 2017/06/07
  • InnoDBとREPEATABLE READとSELECT FOR UPDATEと楽観ロックその2 - もやぶろ

    前回の話に排他(行ロック)を絡めてみる。 Versionカラムを使った楽観ロックをしてみます。 ■ストーリー 1.セッション1 トランザクション開始 2.セッション2 トランザクション開始 3.セッション1 行情報取得→versionカラムを使って楽観ロックをした更新→commit or rollback 4.セッション2 行情報取得→versionカラムを使って楽観ロックをした更新→commit or rollback 楽観ロックなので、1行も更新できなかった場合はrollbackする想定です。 長いので1,2は省略しちゃいます。 READ COMMITTEDセッション1 mysql> select * from Version; +----+------+---------+ | id | text | version | +----+------+---------+ | 1 | i

    InnoDBとREPEATABLE READとSELECT FOR UPDATEと楽観ロックその2 - もやぶろ
    y_r
    y_r 2016/11/14
  • InnoDBとREPEATABLE READとSELECT FOR UPDATEと楽観ロックその1 - もやぶろ

    現場でちょっとはまった話。 InnoDBのトランザクション分離レベルhttp://dev.mysql.com/doc/refman/5.1/ja/innodb-transaction-isolation.html InnoDBはトランザクション分離レベルが選べますが、 デフォルトは「REPEATABLE READ」です。 Oracleは「READ COMMITTED」に近いとの事。(どこが違うんだろう。。) じゃあこの2つどう違うかというと、 READ COMMITTEDセッション1 mysql> begin; Query OK, 0 rows affected (0.00 sec) mysql> select * from Version; +----+------+---------+ | id | text | version | +----+------+---------+ |

    InnoDBとREPEATABLE READとSELECT FOR UPDATEと楽観ロックその1 - もやぶろ
    y_r
    y_r 2016/11/14
  • MySQL InnoDBのネクストキーロック おさらい - SH2の日記

    MySQLのInnoDBストレージエンジンは行ロックをサポートしています。しかしOracleと同じ感覚でアプリケーションを作っていると、思わぬところでデッドロックに出くわすことがあります。これはInnoDBのロック範囲がOracleよりも微妙に広いためです。 実際の例で確認してみましょう。 mysql> select * from t; +----+------+ | c1 | c2 | +----+------+ | 10 | a | | 15 | a | | 20 | a | | 25 | a | | 30 | a | | 35 | a | | 40 | a | | 45 | a | | 50 | a | +----+------+c1列は主キーになっています。1つめのセッションで以下のSQLを実行します。 mysql> set tx_isolation = 'repeatable-r

    MySQL InnoDBのネクストキーロック おさらい - SH2の日記
    y_r
    y_r 2016/11/14
  • 知って得するInnoDBセカンダリインデックス活用術!

    InnoDBはクラスタインデックスという構造になっている。今日はクラスタインデックスがどういうことかということを、皆さんに理解して頂きたい。もっとも理解して頂きたいポイントは「セカンダリインデックスのリーフノードには主キーの値が含まれている」ということだ。 主キーの構造InnoDBの主キーは次の図のように「データが主キーのリーフノードに含まれる」という構造になっている。このような構造をクラスタインデックスという。 このような構造になっていることには利点と欠点があるが、大きな利点は主キーの値で検索をすると非常に高速だということだ。主キーのリーフノードにたどり着いたときには、既にデータのフェッチも完了している。データとインデックスが別々に格納されているタイプのストレージエンジンでは、インデックスからデータの位置を読み取って、その後データファイルからデータをフェッチする。このように二段階の操作が

    知って得するInnoDBセカンダリインデックス活用術!
    y_r
    y_r 2016/11/14
  • データベースについてのそもそも論

    先月のはじめのほうで、「リレーショナルデータベースとの上手な付き合い方」というタイトルで、2回発表をした。ひとつは「まべ☆てっく Vol.1」であり、もうひとつは「Hacker Tackle(ハカタクル?)」である。 「リレーショナルデータベースの開発・運用に纏わるもろもろの話をして欲しい」というような内容の話をしてくれないかという同じような依頼を、ちょうど2日違いのイベントで頂いた。9/8のまべ☆てっくと、9/10のHacker Tackleである。そうなると必然的に話す内容も、同じようなものになってくる。同じ人物(=私)が話すのだから、テーマも同じで時期も同じであれば、内容が同じようなものになるのが自然である。もし違うものになってしまっているのであれば、片方はウソをついているということになるはずだ。今日は発表に使用したスライドを紹介しつつ、なぜデータベースを使うべきなのか(あるいは使う

    データベースについてのそもそも論
    y_r
    y_r 2016/10/05
  • 同時実行制御とSQLite3 - Qiita

    Intro 同時実行制御とは, 共有リソースにアクセスする複数のトランザクションを, いかに並列処理しつつ競合によるデータ破壊を回避するかを扱う分野である. 昨今のアプリケーションではクライアントが複数いることは珍しくない. 同時アクセスを許容せず, クライアントからの要求を直列的に処理できれば同時実行制御の課題は解決されるが, アプリケーションのレスポンスは極端に低下し使い物にならない. パフォーマンスの低下を抑えるためにトランザクションを並列化し, かつリソースの整合性を保証しなければならないため, 同時実行制御を考える必要が出てくる. Conflict 並列処理されるトランザクションの競合を制御しなかった場合の問題は主に4種類ある. 基的にデータの一貫性は保証されない. Dirty Read (w-r) コミットされていないデータを別のトランザクションから参照できてしまう問題. ト

    同時実行制御とSQLite3 - Qiita
    y_r
    y_r 2016/09/15
  • InfoQ: Web開発者が知っておくべき八つの分離レベル

    原文(投稿日:2009/3/15)へのリンク ACID特性はデータベース論の基礎の一つです。ACIDではデータベースの信頼性を保つために必要とされる4つの属性を定義しています。原子性(Atomicity)、一貫性(Consistency)、分離性(Isolation)、そして永続性(Durability)です。4つの属性はいずれも重要ですが、とりわけ分離性については最も柔軟に解釈されています。ほとんどのデータベースがいくつかの分離レベルを選択できるようにしていますし、最近は多くのライブラリがより極め細やかな分離レベルを作成するレイヤを追加しています。このように広範囲の分離レベルが存在している主な原因は、緩い分離レベルによって拡張性や性能が数桁のオーダーで異なることにつながるからである。 シリアライズ可能というのは最も古典的で高い分離レベルであり、一般的に使うことが出来るもので、多くの人がそ

    InfoQ: Web開発者が知っておくべき八つの分離レベル
    y_r
    y_r 2016/09/15
    トランザクション分離レベル。概念的には 8 個あるらしい。
  • 開発者のためのSQLパフォーマンスの全て

    前書き - インデックスの作成はなぜ開発者のタスクなのか インデックスの 内部構造 - インデックスは何に似ているか インデックス リーフノード - 二重連結リスト 検索 ツリー(Bツリー) - バランス木 遅いインデックス パートI - インデックスを遅くする2つの原因 where 句 - 検索のパフォーマンスを改善するためにインデックスを作成 等価 演算子 - 一致するキーの検索 プライマリキー - インデックスの使い方を確認 複合インデックス - 複数列に対するインデックス 遅いインデックス パートII - 前の問題点が再び 関数 - where句の 中での関数 大文字・小文字を区別する 検索 - UPPERと LOWER ユーザ定義 関数 - 関数インデックスの制限 インデックスの作り過ぎ - 冗長性の排除法 パラメータ化 クエリ - セキュリティとパフォーマンスのために 範囲 検

    開発者のためのSQLパフォーマンスの全て
    y_r
    y_r 2016/03/16
    SQL パフォーマンス講座らしい
  • 時代はポストRDBへ--NoSQL徹底研究:2015年はNoSQL元年、今なぜ必要なのか

    印刷する メールで送る テキスト HTML 電子書籍 PDF ダウンロード テキスト 電子書籍 PDF クリップした記事をMyページから読むことができます 企業の中で最も重要な資産の一つである“データ”の多くは1990年代以降、多くがリレーショナルデータベース(RDB)で管理されてきました。ところが最近のビッグデータの潮流の中で、インターネットやモバイル端末を利用する“モノのインターネット(Internet of Things:IoT)”のデータを取り扱う企業やウェブ系、一般企業で従来から利用しているRDBではなく、NoSQLを利用する企業が増えてきています。NoSQLが話題になるようになって数年経ちますが、今なぜNoSQLなのか、日で利用者が増加しているオープンソースの主なNoSQL製品を研究しながら探っていきたいと思います。 今回、この企画をするにあたって、各ベンダーや各方面の専門家

    時代はポストRDBへ--NoSQL徹底研究:2015年はNoSQL元年、今なぜ必要なのか
    y_r
    y_r 2015/10/27
  • Rails でトランザクション分離レベルを設定する方法

    MySQLのトランザクション分離レベル突然ですが問題です。MySQLのデフォルトのトランザクション分離レベルは何でしょうか? REPEATABLE READ This is the default isolation level for InnoDB. via. MySQL :: MySQL 8.0 Reference Manual :: 15.7.2.1 Transaction Isolation Levels ハイ、答えは「REPEATABLE READ」ですネ。 Railsでトランザクション分離レベルを設定続いての問題です。Railsにおいてトランザクション分離レベルを設定するにはどうしたらよいでしょうか? 実は Rails 3 と Rails 4 と Rails 5 以降ではトランザクション分離レベルの設定方法はそれぞれ異なっています。 Rails 3Rails 3の時代では ex

    Rails でトランザクション分離レベルを設定する方法
    y_r
    y_r 2015/10/23
  • トランザクション分離レベル - Wikipedia

    トランザクション分離レベル (トランザクションぶんりレベル)または 分離レベル (英: Isolation) とは、データベース管理システム上での一括処理(トランザクション)が複数同時に行われた場合に、どれほどの一貫性、正確性で実行するかを4段階で定義したものである。隔離レベル 、 独立性レベルとも呼ばれる。トランザクションを定義づけるACID特性のうち,I(Isolation; 分離性, 独立性)に関する概念である。 概要[編集] データベースへの読み書き(トランザクション処理)には処理時間が発生する。複数のトランザクション処理依頼がデータベース管理システムへ行われたとき、これらを処理する1つの方法は逐次的(Serial)に1つずつトランザクションを処理する方法である。トランザクション処理に処理時間がかかることから、後に行われた処理は先に行われた処理が完了するまでの間「待ち」の状態になっ

    y_r
    y_r 2015/10/23
  • トランザクション分離レベルについて極力分かりやすく解説してみた[SQL] - 明日になったら本気出せる

    こっちに移動 qiita.com

    トランザクション分離レベルについて極力分かりやすく解説してみた[SQL] - 明日になったら本気出せる
    y_r
    y_r 2015/10/23
  • 本当は怖いMemcached - Qiita

    はじめに データアクセスの高速化、セッションの保持などに非常に重要なポジションを占めているMemcached 特徴をあげると、速い安い美味いで、AWS上のサービス化などされており、非常に扱いやすいプロダクトなのですが、Memcachedそのものが単一障害点とならないように冗長化を測った時に深刻な問題が発生する可能性があることをご存知でしょうか。 システムに心あたりがある方は今すぐ代替手段を検討しなければなりません。 どうしてもMemcachedを使いたいという方はこちらへ それでもMemcachedを使いたいあなたへ 前提条件 そもそも冗長化をしなければ問題ないという運用はその時点で怖いのでNG cache機構という性質上、データが飛ぶのは問題ない(”正”となるデータを他から読み出すだけ)が、誤ったデータが読み出されるのをNGとする Memcachedを利用した時に利用ノードを決定するのは

    本当は怖いMemcached - Qiita
    y_r
    y_r 2015/09/18
  • DB設計時のサイズ見積もり - よねのはてな

    ここのところ、javaccとawsに魅了されている米林です。 よく使うDB(Oracle/MySQL/PostgreSQL/SQLServer)における設計時のサイズ見積もりで使うサイトの備忘録。 あとは、OracleからのPython情報。 Oracle Oracle 物理設計 http://www.oracle.com/technology/global/jp/columns/skillup/oracle9i/index.html 領域サイズ見積もり http://otn.oracle.co.jp/document/estimate/index.html OTNにログインする必要ありますがオンラインで見積もりが出来ます。 アカウント持っていない人は、この見積もりツールを使う目的でアカウントを作ってみてはいかがでしょうか。 OLTP系とDWH系においてブロックサイズを考慮し、DWH系はブ

    DB設計時のサイズ見積もり - よねのはてな
    y_r
    y_r 2015/09/18