タグ

databaseに関するt-wadaのブックマーク (175)

  • Rails アンチパターン「RDBMS を単なるデータストアとして扱う」 / Rails Anti-pattern RDBMS is not more than datastore

    RDBMS は便利だからもっと使っていきましょうというお話。 表参道.rb #25 Rails アンチパターン で話しました。 https://omotesandorb.connpass.com/event/62936/

    Rails アンチパターン「RDBMS を単なるデータストアとして扱う」 / Rails Anti-pattern RDBMS is not more than datastore
    t-wada
    t-wada 2017/08/04
    外部キー制約を使おうという話。圧倒的に正しい。
  • 『夢のデータベース?「Cloud Spanner」の実力は?』について - Software Transactional Memo

    こんな記事が目に入った。 www.itmedia.co.jp 大雑把に完全に間違ったことを言っているわけでもないが、読んでいくといろいろ鼻につくところがあり、どのあたりから間違っているのかと自分に問いただすのは現時点での自分の知識を棚卸しするためにも有用かも知れないと思ったので一言一句漏らさず思うところを書いていこうと思う。 中には枝葉末節な難癖もあるので全部を真に受けない感じで読んで欲しい。 Cloud Spannerの特徴は、これまでリレーショナルデータベースで不可能とされていた「トランザクション処理の大規模分散処理」を実現したところにあります。 単一のトランザクション処理を分散して実行しているかというと、Spannerはトランザクションごとに担当のトランザクションマネージャがそのトランザクション処理全体を取り仕切って行う仕組みになっている。なので「トランザクション処理の大規模分散処理

    『夢のデータベース?「Cloud Spanner」の実力は?』について - Software Transactional Memo
    t-wada
    t-wada 2017/07/03
    "ACIDを満足させるためにCAP定理が立ちはだかるという構図はレイヤーが異なる議論を混同している" "最強の分離レベルでトランザクションを使ってもアプリがバグるぜというのはDB研究の世界ではいずれ解かれるべき課題"
  • 2000万アカウントの無停止データ移行の裏側

    #DataMigrationNight にて発表したスライドです

    2000万アカウントの無停止データ移行の裏側
    t-wada
    t-wada 2017/06/20
    データ構造の異なる新旧 DB を双方向にリアルタイム同期して、無停止でサービス切り替えを行う事例。すごい。知見の塊だ。
  • 「絶対要らないハズだけど、なかなか削除できずにいるもの」を対応した小話 | メルカリエンジニアリング

    はじめましてこんにちは。SREの@masartzです。 私は最近joinしたのですが、今回は番環境に古くからあるテーブルの掃除作業をした案件をご紹介します。 tl;dr; 番の住所情報テーブルを消したけど問題なかった話 絶対要らないハズだけど、なかなか削除できずにいるもの を対処する話 番環境の住所情報テーブルをdropするまでの作業 今回、番環境の住所情報テーブルをdropしました。 と言っても、事故でもうっかりでもなく、既に使われていなかったものの整理という作業でした。 何故使われていなかったかというのは、メルカリの住所情報の保持の仕方の変遷が関係しています。 初期にはuser情報と住所情報は1対1の関係でした。イメージとしては以下です。 CREATE TABLE IF NOT EXISTS users ( id INT UNSIGNED NOT NULL, name VARC

    「絶対要らないハズだけど、なかなか削除できずにいるもの」を対応した小話 | メルカリエンジニアリング
    t-wada
    t-wada 2017/05/26
    尊い。一度リネームして安全なことを確認してから削除する慎重さや、 "私のように後から入った人間が、現状だけを見て「これはおかしい、負債だ」と言うべきではありません" という姿勢が良い。
  • JJUG CCC 2017 Springで論理削除フラグをどうにかするための話をしてきました 【FOLIOスポンサー】 - itohiro73’s blog

    JJUG CCC 2017 Springで、「データ履歴管理のためのテンポラルデータモデルとReladomoの紹介」という話をしてきました。 データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3 from Hiroshi Ito 今回の登壇は、株式会社FOLIOのスポンサーセッションです!FOLIOについてはこちらの入社エントリー記事もご参考ください。Toggetterは下のリンクから。 togetter.com 世の中のみなさんが「論理削除フラグ」を使いたくなるモチベーションとしては、実は「削除」ではなく別のビジネスロジックを実装したいだけであることがほとんどだと思います。 たとえば論理削除フラグという名の死亡フラグ - @ledsun blogというエントリを参考にさせていただくと、下記のような要件の例があります。 ・社員が退職(・転

    JJUG CCC 2017 Springで論理削除フラグをどうにかするための話をしてきました 【FOLIOスポンサー】 - itohiro73’s blog
    t-wada
    t-wada 2017/05/22
    データ履歴管理のための RDB 設計について。バイテンポラルデータモデル、俺の親父の必殺技だ(名前がついていたのか)
  • データベースリファクタリングについて話をしてきた #OSO2017 - そーだいなるらくがき帳

    岡山にはオープンセミナー岡山と言う最高のイベントがあります。 okayama.open-seminar.org 昨日は id:t-wada さんや id:naoya さんの資料がホットエントリー入りしてました。 この登壇はそれと同じイベントになります。 その他の方も超豪華講師陣の中で、私が出来る精一杯の経験も踏まえたお話をさせていただきました。 speakerdeck.com この中で出て来る、データベースリファクタリングは当に素晴らしいです。 OracleベースなのですがMySQLだろうがPostgreSQLだろうが必ずためになるです。 ですが、このは既に廃刊になっており再販の予定もありません… 僕は後世に絶対必要なの一つだと思っているので再販のためにも皆さんの要望の声を上げていただけるとうれしいです。 そしたらもしかしたらが世に復活するかもしれません。 またSQLアンチパタ

    データベースリファクタリングについて話をしてきた #OSO2017 - そーだいなるらくがき帳
    t-wada
    t-wada 2017/05/18
    とても良い講演でした。『データベースリファクタリング』復刊させたい
  • MySQL with InnoDB のインデックスの基礎知識とありがちな間違い - クックパッド開発者ブログ

    こんにちは、サービス開発部の荒引 (@a_bicky) です。 突然ですが、RDBMS の既存のテーブルを見てみたら「何でこんなにインデックスだらけなの?」みたいな経験はありませんか?不要なインデックスは容量を圧迫したり、挿入が遅くなったりと良いことがありません。 そんなわけで、今回はレコードを検索するために必要なインデックスの基礎知識と、よく見かける不適切なインデックスについて解説します。クックパッドでは Rails のデータベースとして主に MySQL 5.6、MySQL のストレージエンジンとして主に InnoDB を使っているので、MySQL 5.6 の InnoDB について解説します。 InnoDB のインデックスに関する基礎知識 インデックスの構造 (B+ 木) InnoDB では B+ 木が使われています。B+ 木は次のような特徴を持った木構造です。 次数を b とすると、

    MySQL with InnoDB のインデックスの基礎知識とありがちな間違い - クックパッド開発者ブログ
    t-wada
    t-wada 2017/04/20
    とても分かりやすい。「ここを読んでおいて」と言えるエントリ。
  • GitLab.comが操作ミスで本番データベース喪失。5つあったはずのバックアップ手段は役立たず、頼みの綱は6時間前に偶然取ったスナップショット - Publickey

    果たしてGitLab.comで何が起きたのでしょうか? これまでの経緯をまとめました。 スパムによるトラフィックのスパイクからレプリケーションの不調へ GitLab.comは今回のインシデントについての詳細な経過を「GitLab.com Database Incident - 2017/01/31」で公開しています。また、もう少し整理された情報がブログ「GitLab.com Database Incident | GitLab」にも掲載されています。 これらのドキュメントを軸に、主なできごとを時系列に見ていきましょう。 1月31日16時(世界協定時。日時間2月1日午前8時)、YP氏(Yorick Peterse氏と思われる)はPostgreSQLのレプリケーションを設定するためにストレージの論理スナップショットを作成。これがあとで失われたデータを救う幸運につながります。 1月31日21時

    GitLab.comが操作ミスで本番データベース喪失。5つあったはずのバックアップ手段は役立たず、頼みの綱は6時間前に偶然取ったスナップショット - Publickey
    t-wada
    t-wada 2017/02/02
    昨夜のストリーミング配信は、世界各国からコメントが書き込まれ続けていて不思議な一体感があった
  • 【翻訳】 On Uber’s Choice of Databases (データベースにおけるUberの選択について)

    数日前、Uberのブログで「Why Uber Engineering Switched from Postgres to MySQL」というエントリが公開されました。 Why Uber Engineering Switched from Postgres to MySQL - Uber Engineering Blog https://eng.uber.com/mysql-migration/ それに対して、PostgreSQLコミュニティ界隈でもいろいろなブログエントリが公開されました。 Robert Haas: Uber's move away from PostgreSQL http://rhaas.blogspot.jp/2016/08/ubers-move-away-from-postgresql.html On Uber’s Choice of Databases http:/

    【翻訳】 On Uber’s Choice of Databases (データベースにおけるUberの選択について)
    t-wada
    t-wada 2016/08/05
    UberはPostgreSQLをMySQLでリプレースしたのではなく、MySQL/InnoDBの上に構築した独自データベースでPostgreSQLを置き換えた。しかし読者の頭の中に残るのは「PostgreSQLがひどい」でアンフェアだという主張
  • トランザクションの設計と進化

    2. Copyright©2016 NTT corp. All Rights Reserved. このスライドについて 話すこと • 昔のDBの話 • トランザクションの基 • 近代のDB界隈の潮流 • トランザクション技術の変遷 話さないこと • 特定の商用DBの宣伝やF.U.D. • OSS DBの実装の詳細 • 分散トランザクション 3. Copyright©2016 NTT corp. All Rights Reserved. トランザクションの基 トランザクションとは: データに対する一連の操作を一つにまとめた単位の事 トランザクションマネージャとは: 複数のトランザクションがACIDを守って走るよ うに管理する機構 A: Atomicity 結果がAll-or-Nothingとなる事 C: Consistency 一貫性を守る事 I: Isolation 過程が他の処理から

    トランザクションの設計と進化
    t-wada
    t-wada 2016/07/28
    大容量になったメモリを活用しつつディスクにはちゃんと書き込んで永続化する、現代のサーバの進化に合わせて再設計された In-Memory DB の登場で DB のアーキテクチャがどう変わるか
  • Designing Schemaless, Uber Engineering's Scalable Datastore Using MySQL

    While all three systems are able to scale linearly by adding new nodes online, only a couple systems can also receive writes during failover. None of the solutions have a built-in way of notifying downstream dependencies of changes, so we would need to implement that at the application level. They all have indexes, but if you’re going to index many different values, the queries become slow, as the

    Designing Schemaless, Uber Engineering's Scalable Datastore Using MySQL
    t-wada
    t-wada 2016/07/27
    Uber が MySQL 上に構築したデータストア "Schemaless is an append-only sparse three dimensional persistent hash map, very similar to Google’s Bigtable"
  • バックアップと障害復旧から考えるOracle Database, MySQL, PostgreSQLの違い

    2. 2 自己紹介+所属会社紹介 • 渡部 亮太(わたべ りょうた) – JPOUG 共同創設者、ボードメンバー – Oracle ACE – 著書「プロとしてのOracleアーキテクチャ入門 [第2版]」 「プロとしてのOracle運用管理入門」 – ブログ「コーソルDatabaseエンジニアBlog」 http://cosol.jp/techdb/ • 株式会社コーソル – 「CO-Solutions=共に解決する」の理念のもと、Oracle技術に特 化した事業を展開中。心あるサービスの提供とデータベースエン ジニアの育成に注力している – 社員数: 131名 (2016年7月時点) – ORACLE MASTER Platinum 11g 取得者数 45名 ORACLE MASTER Platinum 12c 取得者数 28名 (現時点でおそらく)取得者数 日 No.1

    バックアップと障害復旧から考えるOracle Database, MySQL, PostgreSQLの違い
    t-wada
    t-wada 2016/07/22
    バックアップ、リストア、リカバリの各段階におけるデータの一貫性の観点から、 Oracle, MySQL, PostgreSQL の仕組みを比較する資料。面白い。
  • #odc16 Oracleでの論理削除についてLTしてきた@Oracle Database Connect 2016 - もぐめぽろぐ

    Oracle Database Connect 2016の最後のLTセッション枠に参加してきました。 お題はインデータベース・アーカイブを用いたOracleでの論理削除についてちょろっとLTしてきました。 内容としては、tableにrow archivalをつけると、インデータベース・アーカイブが有効になって、非表示のora_archive_stateというのができるのでそれを論理削除の列として使ってみようというお話でした。 最後に質問でいくつか聞かれたのでここで答えておこうかと思います。 IDに主キーが設定されてる時に論理削除されているレコードを入れようとしたらインサート出来ないのか? →YES。できません SQL> alter table anohana add constraint pk_id primary key (id); Table altered. SQL> select

    #odc16 Oracleでの論理削除についてLTしてきた@Oracle Database Connect 2016 - もぐめぽろぐ
    t-wada
    t-wada 2016/05/21
    Oracle Database 12c の新機能 In-Database Archiving を使って論理削除を実装する資料。金の弾丸で論理削除だ。
  • 「論理削除」ではなく「無効化」を - 設計者の発言

    以前の記事で、テーブルに「スタンプ属性」をいちいち載せるのは惰性的習慣ではないかと書いたが、似たものに「論理削除フラグ」がある。各テーブルにいちいちこれが置かれているDBを見ることがあるが、それもまた惰性の結末ではないか。スタンプ属性だろうが論理削除フラグだろうが、必要ならば置くべきだし、必要でないなら置くべきではない。ただし、多くのケースで必要なのは「論理削除」ではなく「無効化」であることは知っておいたほうがいい。 削除のややこしさは、他テーブルとの関係にある。まず、通常の削除(物理削除)について見よう。テーブルAと参照関係にあるテーブルBがあるとする(図1)。ここで、テーブルA上のレコード①が、テーブルB上のレコード③と④によって結合(参照)されているとすれば、①を削除することは許されない。もし削除してしまえば、存在しないAレコードを結合するBレコードの存在を許してしまう。典型的な更新

    「論理削除」ではなく「無効化」を - 設計者の発言
    t-wada
    t-wada 2016/05/21
    渡辺幸三さん論理削除を語る "「とりあえずの論理削除フラグ」や「そもそも削除なんて不要」といった思考停止に陥ることなく、個別に緻密に考えること。それがシステム設計という因果な仕事の基本"
  • Announcing SQL Server on Linux - The Official Microsoft Blog

    All Microsoft Global Microsoft 365 Teams Copilot Windows Surface Xbox Deals Small Business Support Software Windows Apps AI Outlook OneDrive Microsoft Teams OneNote Microsoft Edge Skype PCs & Devices Computers Shop Xbox Accessories VR & mixed reality Certified Refurbished Trade-in for cash Entertainment Xbox Game Pass Ultimate PC Game Pass Xbox games PC and Windows games Movies & TV Business Micro

    Announcing SQL Server on Linux - The Official Microsoft Blog
    t-wada
    t-wada 2016/03/08
    おおおマジか! 最近の MS は本当に何でもありだな(良い意味で)
  • PostgreSQLアンチパターンの話をいっぱいしてきた。

    見せてあげますよ、当のPostgreSQLアンチパターンを。 とか言ってたわりに半分以上は削除フラグの話でした。 逆にそれが万人受けしたみたいでちょっとはてブいっぱい付いて承認欲求満たされました。 ということでスライドです。 190枚を超える超大作!!とか思ってたけど時間配分バッチシでした。 3回も実践すると3回目はアドリブ効かせたり出来て余裕がありました。 リハ大事w で題の伝えたいことですがあとがきツイートしてるのでまずそちらを。 なんか機能の資料みたら「PostgreSQLの便利な機能は使っちゃダメ」みたいな記事にいっぱいになるけどJSON型とマテビューはケースバイケースで積極的に使うもんじゃないよって話だし、ユニーク制約のWhere句とかは削除フラグ以外の時には便利ですよ。 — そーだい@初代ALF (@soudai1025) 2015, 11月 29 .@soudai1025

    t-wada
    t-wada 2015/12/01
    "今日の話は「データベース実践入門」と「SQLアンチパターン」と「内部構造から学ぶpostgresql 設計・運用計画の鉄則」を読むと全て未然に防げるのでみんな読むべき" もっと読まれて欲しい!
  • イベント「論理削除 Casual Talks #1」の運営をお手伝いした、あと自分用メモ #ronsakucasual

    8月32日を生きるみなさん、おはようございます。昨晩に開催された 論理削除 Casual Talks #1 : ATND について書きます。勤務先のセルリアンタワーで開催されるというので、これは俺得だと思い、運営をお手伝いする形で参加させてもらいました。みなさんのトークもばっちり聞けて、ありがたい機会でした。 @t_wada さんのトーク @yoku0825 さんのトーク @misoobu さんのトーク @moro さんのトーク 論理削除 Casual Talks #1 で「論理削除しない」という話をしました – moroのブログ gyugyu さんのトーク ハッシュタグ付きのツイートはこちらからどうぞ #ronsakucasual hashtag on Twitter みなさんのトークを聴いての雑感 「とりあえず論理削除」っていうのが極めて危険、とあらためて認識しました。来は「当該デー

    イベント「論理削除 Casual Talks #1」の運営をお手伝いした、あと自分用メモ #ronsakucasual
    t-wada
    t-wada 2015/09/01
    "「じゃ、論理削除で」と議論の二合目くらいで思考停止" "「みんなやっているし、大丈夫」「GitHub でスターがこんなについているんだし、安心」みたいな雰囲気が醸されているあたり、合法論理削除という感じ"
  • 論理削除 Casual Talks #1という夢を見たんだ

    それは前職のころ、今回の登壇者でもある @moro の発表にもあるような「要件としての論理削除はない」ということに熱く語りあったりしていたとかいなかったとか。 そして、ある日私が論理削除つらいということをつぶやいたところからこの企画は動きだしました。 このときは半分冗談で、いつか内輪で集まってやれたらいいかなというくらいだったのですが、今年の春にJxckさんの RDB - DELETE_FLAG を付ける前に確認したいこと。 - Qiita をきっかけとしてインターネットで論理削除が盛り上がったこと、所属する組織から技術イベントをやっていこうという機運が高まっていたこと、この2つがちょうどいいタイミングで重なって、これはやるしかないなと思ったのでした。(とはいえ、Jxckさんのエントリからは半年も経ってしまっていますが…) @t_wadaさんの全体像と総論(と思ったら予想以上に踏み込んだ内

    t-wada
    t-wada 2015/09/01
    "懇親会では、Oracleと札束では我々が相手にしているような論理削除は問題じゃないのではないかという話や、実はあの発表の裏にはアレな事情があってとか、発表内容にちなんだより深い話ができて楽しかった"
  • 論理削除の前に別テーブルに切り出せるかどうかを考えよう - Life is Really Short, Have Your Life!!

    めっちゃよくまとまっているので、大変助かりました。 blog.mogmet.com t-wada氏の「とりあえず削除フラグはアカン」については、僕も全く同感です。論理削除をしなければならないビジネス上の理由がスッポリ抜け落ちている。「とりあえず削除フラグ立てて何かあれば戻せるようにすればいいンゴ」ってのは論理設計を放棄していると言い換えても良いし、「ユーザーの言葉ではない」という指摘も重要。こちらに書かれています。 ledsun.hatenablog.com じゃ、フラグやめてどーすんのって話。フラグを立てたくて立てる人はおらん(はず)。「削除フラグを追加するとSELECT時に常にWHERE句で削除フラグを引っ掛ける必要があるのでクソ」→「削除日や状態カラムを使おう」では解決にならん。t-wada氏の資料でも解決策で上げられてたけど「×」マークがついてます。下記に変わっても誰も嬉しくないと

    論理削除の前に別テーブルに切り出せるかどうかを考えよう - Life is Really Short, Have Your Life!!
    t-wada
    t-wada 2015/09/01
    事実の蓄積に関してはテーブルを分けてきちんと設計し、事実の蓄積と関係が無いオペミス対策のためだけにフラグを使うという話。なるほど感がある。
  • 論理削除 Casual Talks #1 で「論理削除しない」という話をしました - moroのブログ

    互いの前職での先輩後輩である @kenchan と企画した論理削除 Casual Talks #1で、「論理削除しない」という話をしてきました。 話す内容が各話者で面白いほどかぶっていたのでなかなか大変でしたが、普段から言っている「論理削除するな」「削除じゃないからちゃんと機能を設計しましょう」という内容を話してきました。 他の方の話も、かぶっているようで新しい視点もあって、いち参加者としてもたいへん勉強になりました。

    論理削除 Casual Talks #1 で「論理削除しない」という話をしました - moroのブログ
    t-wada
    t-wada 2015/09/01
    "データの「終わり方」をふつうに設計する" "四文字熟語で何かを言った気にならない" "削除じゃないからちゃんと機能を設計しましょう"