タグ

DBに関するikosinのブックマーク (228)

  • 排他制御のためだけに Redis 渋々使ってませんか?データベース単独でアドバイザリーロックできるよ!

    トランザクション分離レベルについての教養があったほうがこの記事の内容を理解しやすいため,必要に応じてまず以下を参照されたい。 背景 以前, Qiita で以下の記事を投稿した。今回の議題に直接的な関係はないが,関連している部分があるため引用する。 MySQL/Postgres とも, MVCC アーキテクチャの恩恵で, SELECT と UPDATE は基的には競合しない。 単一レコードのシンプルな UPDATE でも排他ロックされ,排他ロック中のレコードへの UPDATE での変更操作は トランザクション分離レベルによらず ブロックされる。UPDATE 文に含まれる WHERE 句での検索もブロックされ,これはブロックされない SELECT による検索とは別扱いになる。 但し UPDATE 文の WHERE 句上で,更新対象をサブクエリの SELECT から自己参照している場合は例外。

    排他制御のためだけに Redis 渋々使ってませんか?データベース単独でアドバイザリーロックできるよ!
  • 自作RDBMSやろうぜ!(Zenn出張版)

    Disclamer 記事は自作DBMSやろうぜ! のページの 22/05/27 JST 22:38 の時点での内容をZenn記事向けに修正して作成したものです 元コンテンツのライセンスについては以下をご参照ください LICENCE 元コンテンツの方は更新が継続されていますので、よろしければそちらもご覧ください この記事の目的 RDBMS(いわゆるリレーショナルデータベース)というものはプログラミング言語の処理系や、OSなどと同様に、世の中で広く使われているソフトウェアであるにも関わらず、いざ自作してみようと思うと日語で記述されている必要な情報・情報源がまとまったサイトやブログ記事がないことに気づきました そこで、叩き台として、筆者および数名のコミッタで開発している自作RDBMSである SamehadaDB が軌道に乗るまでの経験をベースに、自作RDBMSに関する情報をある程度整理して書

    自作RDBMSやろうぜ!(Zenn出張版)
    ikosin
    ikosin 2022/05/30
  • Cloudflare D1 がヤバい

    まだ検証足りないけど、マジで想像通りのブツなら魂震えるかもしれん…。 Announcing D1: our first SQL database Cloudflare D1 = Edge SQLite Cloudflare D1 は Cloudflare Worker で、つまり CDN Network 上で sqlite が動きます。これだけなら普通の sqlite ホスティングなんですが、もちろん Cloudflare が出すからにはそれだけではなく、CDN Edge 上に Read Replica がバラ撒かれた sqlite になります。ヤバくないですか? 僕はヤバいと思いました。 このヤバさを知るために、Cloudflare が開発した基盤についていくつか抑えておく必要があります。 Durable Objects は CDN 上の Actor モデルを構築できます。この Acto

    Cloudflare D1 がヤバい
  • 外部キー制約が一切ないと何に困るのか?

    こんにちは。株式会社プラハCEOの松原です 注目を集めつつあるMySQLプラットフォームのPlanetScaleですが、外部キー制約が効かないという一見致命的に見える仕様について調べていたところ、こちらのDiscussionで興味深い回答が開発者から寄せられていたので日語でまとめ直してみようと思いました。 外部キー制約がなくてもそれほど困らない理由 今回の話はParentテーブル(id)とChildテーブル(id,parent_id)を前提に考えていきます そもそも外部キー制約は何に役立つのか 今回のDiscussionでは質問者から「外部キー制約がないとこういう時に困るよ!」と質問が寄せられています: 外部キー制約がないと参照先のデータが存在していることを保証できない! 外部キー制約がないとデータの重複を回避できない! それぞれの質問に対して回答者の回答は以下の通りです: 外部制約がな

    外部キー制約が一切ないと何に困るのか?
  • TPC-Homepage

    The TPC is a non-profit corporation focused on developing data-centric benchmark standards and disseminating objective, verifiable data to the industry.

  • Creating the GitHub of databases, with Sugu Sougoumarane, co-founder and CTO of PlanetScale

  • The ultimate MySQL database platform

    Scale, performance, and reliabilityScale, performance, and reliabilitypowered by Vitess The ultimate MySQL database platformPlanetScale is the world’s most advanced, fully-managed MySQL database platform.

    The ultimate MySQL database platform
  • 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

  • よくあるオンプレOracleからRDSに移行したDBAの反省文 - ASMのきもち

    この記事は JPOUG Advent Calendar 2021 - Adventar 17日目の記事です。 昨日はShinodaさんの「Oracle Database から PostgreSQL への接続を試す - Qiita」でしたね。 いやーOracle Database Gateway for ODBC全然使ったことがなかったので、これはぜひやってみよ…あれ、RDSでできるの?明日AWSサポートに早速連絡してみよう… 最近ブログを書く頻度がアドベントカレンダー以外書く頻度がない感じになってきております…コレハ、マズイ、ゾ!!笑 さて弱気な内容はおいておいて…ここ最近、ろくに活動もできなかったのはこれをやっていたからなのです。 そうよくある、(꜆꜄•ω•)꜆꜄꜆オンプレOracleからRDSに移行した話。 今更感あるのですが、私と同じミスを減らすきっかけになれば。と思い、書いてみます

    よくあるオンプレOracleからRDSに移行したDBAの反省文 - ASMのきもち
  • 【レポート】パフォーマンスチューニングの強い味方!Aurora PostgreSQL Performance Insightsのご紹介 #AWSSummit | DevelopersIO

    DA事業部の春田です。 AWS Summit Online絶賛開催中!ということで、記事では「Architecting and Building - 突然データベースのパフォーマンスが悪化、あなたならどうする?【前半】」の内容についてまとめていきます。 セッション情報 アマゾン ウェブ サービス ジャパン株式会社 技術統括部 ソリューションアーキテクト 内山 義夫 アマゾン ウェブ サービス ジャパン株式会社 技術統括部 ソリューションアーキテクト 新久保 浩二 ある日突然データベースのパフォーマンスが悪化した際に皆さんはどのように対処しますか? また、突然悪化させないためにどのような運用をしていますか? セッションでは過去から現在にいたるまでデータベースでどのようなワークロードの状況だったかを捕捉し、パフォーマンス悪化の状況や原因を分析します。また、日々の運用でパフォーマンスを

    【レポート】パフォーマンスチューニングの強い味方!Aurora PostgreSQL Performance Insightsのご紹介 #AWSSummit | DevelopersIO
  • 7月新刊情報『詳説 データベース』

    『詳説 データベース ―ストレージエンジンと分散データシステムの仕組み』 Alex Petrov 著、小林 隆浩 監訳、成田 昇司 訳 2021年7月6日発売予定 392ページ ISBN978-4-87311-954-0 定価4,180円(税込) データベースを選択し、使用し、管理するには、その内部構造を理解することが不可欠です。しかし、今日ではたくさんの分散型データベースやツールが存在するため、それぞれが何を提供しているのか、どのように異なるのかを理解することは困難です。 書はデータベースとストレージエンジンの内部で利用されている概念を解説します。ストレージエンジンでは、ストレージの分類、Bツリーベースのストレージエンジンとイミュータブルなログ構造化ストレージエンジンの違いと事例を紹介します。ストレージの構成要素については、ページキャッシュ、バッファプール、ログ先行書き込みなどの補助的

    7月新刊情報『詳説 データベース』
    ikosin
    ikosin 2021/09/13
  • Re: Configuring sql.DB for Better Performance : DSAS開発者の部屋

    Configuring sql.DB for Better Performance という記事を知りました。 コネクションプールの大きさを制御する3つの設定を丁寧に解説されたとても良い記事です。 しかし、この記事で推奨されている設定については同意することができません。私が推奨する設定とその理由を解説していきたいと思います。 Limit ConnMaxLifetime instead of MaxIdleConns Allowing just 1 idle connection to be retained and reused makes a massive difference to this particular benchmark — it cuts the average runtime by about 8 times and reduces memory usage by ab

    Re: Configuring sql.DB for Better Performance : DSAS開発者の部屋
    ikosin
    ikosin 2021/09/07
  • Go の sql.DB がコネクションプールを管理する仕組み

    Godatabase/sql パッケージ の DB 構造体 は、データベースへのコネクションプールを管理し、かつスレッドセーフ (goroutine セーフと言ったほうが良いのだろうか…?) にそれらの接続を使用できることを保証している。 ドキュメント にも次のように書かれている。 DB is a database handle representing a pool of zero or more underlying connections. It’s safe for concurrent use by multiple goroutines. こちらの基的な実装内容と、動作を制御するパラメータについて調べてみた。 基礎知識のおさらい database/sql パッケージはデータストアの実装によらない一般的な SQL のインタフェースを提供している。具体的なデータストアへの接

    Go の sql.DB がコネクションプールを管理する仕組み
    ikosin
    ikosin 2021/09/03
  • これだけ抑えればOK!権限管理のDB設計デザインパターン - blog.waterlow.work

    目的 最近仕事で権限管理の設計をやっていたのだが、設計でかなりはまってしまった。 今後ははまらないように、DB設計や判断基準をまとめておく。 ベースとなるパターン ユーザとロールは多対1で、ロールとアビリティは多対多に関連している。 権限管理やりましょうという場合にはこれにしておけば大抵の複雑な要求には対応できる。 もしユーザが増えてロールとアビリティの管理が複雑になってきても、DB管理なのである程度自由にやりことができる。 ただし、ちとファーストステップとしてはやりすぎか。 ユーザ-ロールが多対多パターン 前の例に加え、ユーザもロールを多数持つパターン。各権限が互いに素に近い状態、例えばカスタマーサポートとマーケティング、そのどちらも担当する人みたいなケースが有る場合に使える。 アプリケーションが大きくなっていて、権限の数も数十くらいになってきた場合はこれか。 直接アビリティパターン ユ

    これだけ抑えればOK!権限管理のDB設計デザインパターン - blog.waterlow.work
  • SQLアンチパターン 幻の第26章「とりあえず削除フラグ」

    SQLアンチパターン 26章「とりあえず削除フラグ」 2015/08/31 @ GMO Yours #ronsakucasual https://atnd.org/events/68902Read less

    SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
  • DDDとORMのEntityを混同しないための考え方

    2つの ”Entity” ある種の ORM では RDB のテーブルスキーマモデルとなるクラスのことをEntityと呼んでいます。例えば PHP のDoctrineや TypeScript のTypeORMなどがそうです。 そういった ORM を採用したプロジェクトで DDD に取り組むとき困るのが用語の衝突です。ORM の Entity は RDB のための定義を含むため当然 DDD の Entity とは異なるのですが、なにぶん同じ名前なので混同してしまいがちです。 記事では両者を混同せず扱うための考え方をまとめます。 Entity の定義 まずは定義から確認します。 DDD での定義 エヴァンスの日語訳から引用します。 主として同一性によって定義されるオブジェクトはエンティティと呼ばれる Eric Evans. エリック・エヴァンスのドメイン駆動設計 (Japanese Edi

    DDDとORMのEntityを混同しないための考え方
    ikosin
    ikosin 2020/12/17
  • 結局、Go言語をやめる理由はなかった件 - Qiita

    この記事は Go 2 Advent Calendar 14日目の穴埋め記事です。 はじめに @okdyy75 さんによる Go 5 Advent Calendar 14日目の の記事「だから僕はGo言語を辞めた」 が「ベンチマークっていうのはこうやるんだよ」というのを説明するために反面教師的な意味で良い教材だと思ったので、反証記事を書きたいと思います。 ベンチマークを取りながらコードを改善して、最終的にGoは遅くないからやめる必要はないということ、そして、なぜ遅いという結論になってしまったのかを掘り下げていきたいと思います。 下準備 幸いなことに、ベンチマークのソースコードがGitHubにある ので、こちらを実行しながら問題点を改善していきましょう。 ちゃんとコードが上がっているのは素晴らしいですね! 一方で、元記事には測定環境が明記されていませんでしたので、同じ環境で測定することはできま

    結局、Go言語をやめる理由はなかった件 - Qiita
  • SELECT ... FOR UPDATE同士でデッドロックさせる - かみぽわーる

    最近SELECT ... FOR UPDATEでデッドロックする話を何度かしたので。 前職のときにUPDATE同士がデッドロックしてたときに、SELECT ... FOR UPDATEで排他ロックを取ってからUPDATEしてデッドロックを防ぎますってPRをレビューしてたときのことで、複数レコードの排他ロックは一瞬ですべてのレコードのロックを取れるわけではなく、ロックを取る順番が揃っていないと簡単にデッドロックしますよという話です。 https://gist.github.com/kamipo/0bb4e37d58ba18a8cefb8aa02f778231 # frozen_string_literal: true require "mysql2" def client Mysql2::Client.new( host: "localhost", username: "root", dat

    SELECT ... FOR UPDATE同士でデッドロックさせる - かみぽわーる
    ikosin
    ikosin 2020/12/16
  • データベースを遅くするための8つの方法

    はじめに Twitterのタイムラインを見ていたらバッチ系のプログラムで逐次コミットをやめて一括コミットにしたら爆速になったというのを見ました。当たり前でしょ、と思ったけど確かに知らなければ分からないよね、と思って主に初心者向けにRDBを扱うときの注意点をまとめてみました。 プログラミングテクニック的なところからテーブル設計くらいの範疇でDBチューニングとかは入ってないです。 自分の経験的にOracleをベースに書いていますが、他のRDBでも特に変わらないレベルの粒度だと思います。 大量の逐次コミットをする バッチアプリケーションでDBにデータをインサートすると言うのはかなり一般的な処理です。しかしデータ量が少ない時はともかく大量のインサートを逐次コミットで処理するとめちゃくちゃ遅くなります。数倍から十数倍遅くなることもあるので、10分程度のバッチが1時間越えに化けることもザラにあるので原

    データベースを遅くするための8つの方法
  • 第6回 ネットワークボトルネックの原因と解決策 | gihyo.jp

    クライアントとDBサーバ間のネットワークがボトルネックになる2つのケース これまで、大規模データ処理RDBMSの2大ボトルネックであるI/OとCPUについて、発生の原因と改善策を紹介してきました。その2大巨頭に隠れて目立たないのですが、大規模データ処理を行う際には、I/OやCPUと同じくらいネットワークもボトルネックになりやすいものです。 ネットワークがボトルネックになるケースとしては、以下の2つがあります。 DBサーバとストレージ間のネットワークI/O クライアントとDBサーバ間の結果セット転送 前者は第2回、第3回で紹介しているので、今回はクライアントとDBサーバ間のネットワークに焦点を当てて解説していきます。 大規模データ処理を行うRDBMSにおいて、クライアントとDBサーバ間のネットワークがボトルネックになる代表的なケースは下記の2つです。 ケース① ⇒ DBサーバがクライアントに

    第6回 ネットワークボトルネックの原因と解決策 | gihyo.jp
    ikosin
    ikosin 2020/09/09