タグ

DBに関するkymmt90のブックマーク (22)

  • SQLのインデックスとそのチューニングについてのオンラインブック

    開発者向けのSQLインデックス解説サイト、管理についての間違いない知識を提供します。 インデックスは開発時には忘れられがちである一方で、非常に効果的なSQLのチューニング方法です。Use The Index, Lukeでは、HibernateなどのORMツールの解説にとどまらず、SQLのインデックスについて基礎から説明します。 Use The Index, LukeはSQLパフォーマンス詳解のWeb上の無料版です。サイトを気に入って頂けたら、ぜひ書籍も購入してみて下さい。また、このサイトの運営をサポートする様々なグッズも販売しています。 MySQLOracleSQL ServerなどにおけるSQLのインデックスUse The Index, Lukeでは、ベンダにとらわれないインデックスの説明を心がけています。製品特有の事柄については、以下のような表示をしています。 DB2Use The

    SQLのインデックスとそのチューニングについてのオンラインブック
    kymmt90
    kymmt90 2019/04/09
  • Where狙いのキー、order by狙いのキー

    11. I'm yoku0825 ● とある企業のDBA ● オラクれない ● ポスグれない ● マイエスキューエる ● 家に帰ると ● 嫁の夫 ● せがれの父 ● 馬鹿だからかわいいわけじゃなくて、かわいい イルカがたまたまバカだった 12. はじめに ● サンプルデータは MySQLのサンプルデータ ベース(worldデータベース)からインデック スを全て取っ払ったものです ● http://dev.mysql.com/doc/index-other.html ● コードはgithubに上げてあります ● https://github.com/yoku0825/yapc_2014 ● すごく…ウンコードです… 13. はじめに ● 原則、MySQLは1つのテーブルにつき同時に1 つのインデックスしか使いません ● Index mergeとかあるけどアレは例外だし狙って やっても速くなる

    Where狙いのキー、order by狙いのキー
  • DBの寿命はアプリより長い! 長生きするDBに必要な設計とリファクタリングを実践から学ぶ - エンジニアHub|若手Webエンジニアのキャリアを考える!

    DBの寿命はアプリより長い! 長生きするDBに必要な設計とリファクタリングを実践から学ぶ アプリケーションの寿命よりも長く、データの追加やテーブルの変更で成長し続ける「データベース」と、どのように付き合っていけばよいのでしょうか? 曽根壮大(soudai)さんによる寄稿です。 こんにちは。そーだい(@soudai1025)です。 新しいサービスを始めるとき、必ずと言っていいほどデータベースは利用されています。また今稼働しているサービスの多くでも、RDBMSをはじめ、いろいろなデータベースが利用されています。そんなに広く利用されているデータベースだからこそ、多くの問題の元になるのもまた事実です。 そこで今回は、Webサービスを中心にデータベースの選び方、設計についてお話していきたいと思います。そして私もまさに今、2011年から続くWebサービス「オミカレ」のRDBMSのリファクタリングに携わ

    DBの寿命はアプリより長い! 長生きするDBに必要な設計とリファクタリングを実践から学ぶ - エンジニアHub|若手Webエンジニアのキャリアを考える!
    kymmt90
    kymmt90 2019/02/11
  • #ronsakucasual DBの論理削除についてひたすら共有する 論理削除 Casual Talks #1 にいってきたまとめ - もぐめぽろぐ

    名前 とりあえず削除フラグ 目的 エンドユーザから見るとデータがないことにしたいけど、実際のデータは消したくない 削除したデータを検索したい データを消さずにログに残したい 誤った操作をなかったことにしたい、直ぐに元に戻したい アンチパターン 例えばis_deletedというカラムがtrueの場合は削除されているとみなす メリット update文ならデータが簡単に元に戻せる気がするのでなんとなく安心 -> 俺のupdate文でなんとかなる!! 起こること SELECTするときには常にWHERE句が追加で必要になり、コードが削除フラグだらけになる 全員テーブル設計に精通してるわけではないので、テーブルによって削除フラグの有無があったりした場合、認識の齟齬を生みやすい 例えばrubyでdefault_scopeを用いて、よかれとおもってコードレベルでデフォルトを変えたらバグがたくさん出てくる

    #ronsakucasual DBの論理削除についてひたすら共有する 論理削除 Casual Talks #1 にいってきたまとめ - もぐめぽろぐ
    kymmt90
    kymmt90 2018/11/08
  • Database Performance for Rails Applications - Speaker Deck

    Tips on fixing database performance problems and a few war stories from fixing performance at Cookpad

    Database Performance for Rails Applications - Speaker Deck
  • Embulk+Digdagを利用して、個人情報を考慮したマスク処理を開発用DBに行う — みんなのウェディングエンジニアリングブログ

    みんなのウェディングのインフラエンジニア横山です。 今回は開発用DBマスク処理にEmbulk+Digdagを利用し始めた話について書きます。 開発用DBマスク処理とは 弊社では、週次でDBのスナップショットから開発環境用DBを作り直しています。 これにより、常に番環境と同じテーブル定義、データ量で開発を行うことができ、以下のようなメリットがあります。 番にデプロイする前に、開発、ステージング環境で不具合を早期発見できる 実際に近いデータで、番を想定した確認ができる ここで問題になってくるのが、ユーザの氏名やメールアドレスといった個人情報の扱いについてです。 開発用DBDBのスナップショットから作成されているため、開発用DBにもDBの個人情報が入ってしまっています。 この状態で利用すると、以下にあげる問題が考えられます。 開発中の機能による、ユーザへのメール誤配信など

    Embulk+Digdagを利用して、個人情報を考慮したマスク処理を開発用DBに行う — みんなのウェディングエンジニアリングブログ
    kymmt90
    kymmt90 2018/05/14
  • SchemaSpy • Database Documentation Built Easy.

    Get Started Welcome in SchemaSpy we will do the best to simplify documentation process of your database. When you start using SchemaSpy you can build your documentation in continuous process > java -jar schemaspy.jar -t mssql05 -dp C:/sqljdbc4-3.0.jar -db DATABASE -host SERVER -port 1433 -s dbo -u USER -p PASSWORD -o DIRECTORY Installation Process of installation is very simple because SchemaSpy i

    kymmt90
    kymmt90 2018/05/08
  • 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
    kymmt90
    kymmt90 2018/04/25
  • モンストのサーバー負荷との戦い 〜あけおめ2018編〜 / bcu_30_server_9

    スマホアプリ「モンスターストライク」のサーバー負荷は、年末年始に1年のピークを迎えます。2018年元旦のサーバー負荷に立ち向かうために実施した対策の一例として、データベースサーバー(MySQL)を安全に水平分割した事例を紹介します。見積もりから計画、実施に至るまでを時系列で振り返ります。

    モンストのサーバー負荷との戦い 〜あけおめ2018編〜 / bcu_30_server_9
    kymmt90
    kymmt90 2018/04/22
  • Rails: データベーススキーマをダウンタイムなしで変更する(翻訳)|TechRacho by BPS株式会社

    概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: Managing db schema changes without downtime 原文公開日: 2018/03/22 著者: Sam Saffron -- Discourseの共同創業者であり、Stack Overflowでの開発経験もあります。 後半で紹介されているgemについては先週のRailsウォッチもどうぞ。 2018/04/09: 初版公開 2022/10/25: 細部を更新 Discourseのメンバーはいつも継続的開発の大ファンであり、コミットのたびにCIのテストスイートと対決しています。すべてのテスト(UI、単体、結合、スモーク)にパスすれば、自動的にコードの最新バージョンがhttps://meta.discourse.orgにデプロイされるようになっています。 私たちが継続的開発というパターンに沿って実践し

    Rails: データベーススキーマをダウンタイムなしで変更する(翻訳)|TechRacho by BPS株式会社
  • データベースリファクタリングについて話をしてきた #OSO2017 - そーだいなるらくがき帳

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

    データベースリファクタリングについて話をしてきた #OSO2017 - そーだいなるらくがき帳
    kymmt90
    kymmt90 2018/04/01
  • DBリファクタリングの勘所と所感 - そーだいなるらくがき帳

    表題についてそーだいなる見解を書き残します。 今年の夏に id:koemu さんにbuilderconの懇親会で下記のような話をいただいていました。 懇親会で、DB側ばかりでなくプログラム側でも適切なドメインモデルの設計ができていれば、リファクタリング時の影響範囲がさらに小さくできるのでは?という話をしたところ、この辺りはアンサーブログを書いてくれるかもしれないってことなので期待しています!!! www.koemu.com 忘れてないんですよ!しっかり覚えています。 結論 仰る通りだと思うし、適切なドメインモデルはRDBに限らずデータストア層のリファクタリングの負担を大きく減らすと思います。 ここから先は僕なりの考え方を書きます。 実は似たような話を PHPの現場 っていうポッドキャストでも触れています。 php-genba.shin1x1.com システムの柔軟性 勿論、コードの綺麗さや

    DBリファクタリングの勘所と所感 - そーだいなるらくがき帳
    kymmt90
    kymmt90 2018/04/01
  • [Rails]STIから脱却してCTIでポリモーフィックを実現する - Qiita

    Ruby on Rails Advent Calendar 2017の24日目の記事です。 SQLアンチパターンやPofEAAで「オブジェクト指向設計で抽出されたスーパークラス・サブクラスから成る継承階層をリレーショナルデータベースのテーブルとして実装するためのパターン」として具象テーブル継承、クラステーブル継承、単一テーブル継承(STI)の3つが紹介されています。 みんなRailsのSTIを誤解してないか!? その中でRailsはSTIはサポートされてますが、その他2つは自分で頑張ってポリモーフィックを実現しないといけないです。 STIを使わない理由としては NULLを許容したくない UpdateではなくInsertでデータ保存のフローを作りたい has_manyなデータはSTIだとjson型などスキーマレスになる あたりでしょうか。 今回はクラステーブル継承を実現する方法を書きます。デ

    [Rails]STIから脱却してCTIでポリモーフィックを実現する - Qiita
  • Simple rails history pattern (ActiveRecord)

    fdutey • Posted on 2015-09-14 •   In Backend , English • ContextMany times in my career, I had to face cases where I had to keep a history of one or many tables. Most of the time, the need of history comes after the main feature itself is developed and ends up in this kind of architecture: | Post | | PostHistory | |==============| |===============| | author_id | | post_id | | title | | title | | c

  • 変更履歴を持つテーブルの設計 - Qiita

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

    変更履歴を持つテーブルの設計 - Qiita
    kymmt90
    kymmt90 2017/08/26
  • リレーショナルデータベースでは履歴の管理をすべきでない? - valid,invalid

    リレーショナルデータベースで履歴の管理は難しい。 いまDB設計を担当している案件で、業務用件として履歴管理が現れた。 「データの更新の度に更新前後のデータを保持し、過去のある時点のデータを再現したい」という。 どう実装するか。。 追加のみ行うよう設計するはじめに考えたのはテーブルAにはレコードの追加のみ行う、という方法。 しかし…下記の理由により断念。 テーブルAのオカレンスは頻繁に更新され、レコード数が大変なことになる。オンライン処理の為、厳しい。また、今回はテーブルAだけでなく、テーブルAとリレーションを持つ他の幾つかのテーブルの履歴も持たなければならない。つまり、テーブルAを更新する為に他の複数のテーブルにINSERTを行わなければならなくなってしまう。これをアプリケーション実装者に強いるのはリスク。体と履歴の情報を分けるテーブルAとは別にテーブルA履歴を用意する方法。履歴テーブル

    リレーショナルデータベースでは履歴の管理をすべきでない? - valid,invalid
    kymmt90
    kymmt90 2017/08/26
  • 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
    kymmt90
    kymmt90 2017/08/03
    RDBMSの制約を使うと "データを信頼できる", "誤りに早く気付ける"
  • 初めてのPostgreSQLメモ - takatoshiono's blog

    はじめに 普段MySQLを使っている人間が初めてPostgreSQLを触ってみたので、調べたことを整理して書いておきます。インストールしてテーブルを作るという当に基のところから、開発運用しているとどうしても気になってくるALTER TABLE周りまで。 インストール Macを使っているのでhomebrewで入れました。 $ brew install postgresql バージョンは9.6.3でした。 $ postgres --version postgres (PostgreSQL) 9.6.3 データベースクラスタの作成 PostgreSQLにはデータベースクラスタというのがあって、その中にデータベースを作るという感じになっている。データベースクラスタを作るにはinitdbを使う。またはpg_ctlを使う。brew install postgresqlした時にすでに実行されていた。

    初めてのPostgreSQLメモ - takatoshiono's blog
    kymmt90
    kymmt90 2017/07/03
  • 素早く正規形を見抜く実践テクニック(1/4) - @IT

    今回のテーマはデータベースエンジニアの必須知識の1つである「正規化」です。正規化は、リレーショナル・データベースのテーブル設計を行ううえで非常に重要なテクニックであり、データベースを設計、実装したことのある方なら一度は正規化に触れているのではないでしょうか。 それほど基的な知識であるにもかかわらず、正規化を説明できる人はなかなかいません。多く聞かれるのが「何となくテーブルを作ると自然に第3正規形になる」とか「実務上は第3正規化まで行えば問題ない」というものです。 ではなぜ「第3正規化まで行えば問題ない」のでしょうか。稿ではひととおり正規化について確認しながら、あまり触れられることのない第3正規化より先の正規化を紹介して、この疑問に答えていきたいと思います。 正規化の位置付け 正規化は、データベース設計全般にかかわる基礎知識ですが、特に論理データモデリングの作業の中で必要になります。稿

    素早く正規形を見抜く実践テクニック(1/4) - @IT
    kymmt90
    kymmt90 2017/07/02
  • 論理削除Casual Talksでの議論を見て、削除フラグの採用を全力で阻止して本当に良かったと思った - valid,invalid

    昨日の論理削除Casual Talksの資料きた。よくわかる。 blog.mogmet.com SQLアンチパターン 26章「とりあえず削除フラグ」 from Takuto Wada 私の経験上は、ユーザーから「論理削除」という言葉を聞いたことがありません。 ここが当に肝だと思う。 これまでに論理削除フラグを採用したプロジェクトにいた人や、少しこなれた情シス(非ユーザー)からはわりと簡単に「論理削除」という言葉が出がちだが、ユーザーにとってはその操作や処理はどんな意味があるのかを考えていないケースが殆どだと思う。 スライドにある通り、代替案の考慮なき提示は思考停止なわけだけど、削除=>論理削除という流れでイメージを想起する人は決して少なくないと思う。 特に実装や保守を通ってないとアンチパターンとしての負の側面を意識することが少ないだろうし、過去の案件で一つでも削除フラグを採用した経験があ

    論理削除Casual Talksでの議論を見て、削除フラグの採用を全力で阻止して本当に良かったと思った - valid,invalid
    kymmt90
    kymmt90 2017/06/24