タグ

DBに関するChiseiのブックマーク (34)

  • サービスを停止せずにデータベースリファクタリングする - Pepabo Tech Portal

    2022年7月13日にカラーミーショップで提供開始した「副管理者機能」のアップデートにあたって、従前の挙動を変えずにデータベーススキーマの構造を変える必要がありました。また、サービスの提供を停止することなく、スキーマの構造の変更を進める必要がありました。 この記事では、サービスを停止せずにデータベースの構造を徐々に変更するデータベースリファクタリングをどのように進めたかについて紹介します。 「データベースリファクタリング」とは データベースリファクタリングについて体系的に述べた書籍として"Refactoring Databases"があります。このでは、データベースリファクタリングのさまざまなパターンにおいて、スキーマの変更、データマイグレーション(既存データの移行)、アプリケーションの変更それぞれをどのように進めるべきかについて解説しています。ここでは、"Refactoring Dat

    サービスを停止せずにデータベースリファクタリングする - Pepabo Tech Portal
    Chisei
    Chisei 2022/07/21
  • なぜMySQLのサブクエリは遅いのか。

    よくMySQLはサブクエリが弱いと言われるが、これは当だろうか?半分は当で半分は嘘である。MySQLのサブクエリだってなんでもかんでも遅いわけではない。落とし穴をしっかり避け、使いどころを間違えなければサブクエリも高速に実行できるのである。今日はMySQLがどんな風にサブクエリを実行し、どのような場合に遅いのかということについて説明しよう。 EXPLAINで実行計画を調べた際に、select_typeにはクエリの種類が表示されるのだが、代表的なサブクエリには次の3つのパターンがある。 SUBQUERY DEPENDENT SUBQUERY DERIVED 結論から言おう。遅いのは2番目、DEPENDENT SUBQUERYである。DEPENDENT SUBQUERYとはいわゆる相関サブクエリに相当するもので、サブクエリにおいて外部クエリのカラムを参照しているサブクエリのことである。そし

    なぜMySQLのサブクエリは遅いのか。
  • downコマンドがなくupだけのDBマイグレーションツール Dbup - ぷぎがぽぎ

    ビー・バップ・ハイスクールって知ってますか? Dカップって大きいですよね? というわけで、超シンプルなDBマイグレーションツール Dbup を作ってみたので紹介。 Dbup http://brtriver.github.io/dbup/ 日語: http://brtriver.github.io/dbup/ja/ インストールから実行までのデモンストレーション dbup.pharをダウンロード 必要なディレクトリや設定ファイルを作成 statusで確認しつつ、upで実行 dbup demo from brtriver on Vimeo. 特徴 準備はdbup.pharをダウンロードするだけ up コマンドしかありません。down コマンドは存在しません マイグレーションの記述は親しみあるSQLそのままです。ORMやDSLを新しく覚える必要はありません PHP標準のPDOクラスを利用してい

    downコマンドがなくupだけのDBマイグレーションツール Dbup - ぷぎがぽぎ
    Chisei
    Chisei 2013/05/04
    読んだ。使ってみる
  • Homepage - Flyway

    Increase reliability of deployments by versioning your database Get Flyway for free Stay updated about Flyway Get all the latest guides, community news, product updates, and resources

    Homepage - Flyway
  • 動くソフトウエアを作る前にアジャイルモデリングを - 設計者の発言

    アジャイル手法は「俊敏な業務システムを作る手法」なのだろうか。それとも「俊敏に業務システムを作る手法」なのだろうか。「データモデルなきアジャイルの危うさ」でも説明したように、的外れなDB構造の見直しを促す契機をもたらさないとすれば「俊敏な業務システムを作る手法」ではない。DB構造が硬直化した業務システムは、事業の変化・発展に俊敏に追随できないからだ。 いっぽう、アジャイル手法は「俊敏に業務システムを作る手法」でもなさそうで、その過程は期待に反して鈍重である。アジャイル手法の大きな特徴が、開発対象を小さく切り出して、それ毎に短期のイテレーションを繰り返す点だ。これだけ聞けばいかにも俊敏にコトは運びそうだが、それのどこが鈍重なのか。 説明しよう。アジャイル手法では「動くソフトウエア」が重要視され、仕様の確立はこれによって駆動されると考える。ところが多くの場合、「動くソフトウエア」は「持ち帰り」

    動くソフトウエアを作る前にアジャイルモデリングを - 設計者の発言
    Chisei
    Chisei 2012/10/03
    同意できる『DB構造が硬直化した業務システムは、事業の変化・発展に俊敏に追随できないからだ。』
  • MyBatis Schema Migrationを使ってみる - @katzchang.contexts

    この記事は Java Advent Calendar -ja 2010 の4日目のものです。 はじめに 継続的な開発では、データベーススキーマも段階的変化に耐えることが求められる。マイグレーション・システムが必要だ。 そこで、MyBatis Schema Migrationというのがあるらしいので試してみた。ほら、Java屋にはおなじみのMyBatisだ。 インストールする http://code.google.com/p/mybatis/downloads/list?can=3&q=migrations から、「MyBatis Schema Migrations 3.0.2 GA」をダウンロードし、適当な場所に展開し、PATHを通す。 migrate init - 初期設定 プロジェクトのホームがあれば、その下に空のディレクトリを作り、そこでスキーマの管理をするとしよう。空のディレクトリ

    MyBatis Schema Migrationを使ってみる - @katzchang.contexts
    Chisei
    Chisei 2012/09/29
    読んだ。
  • SQLで木と階層構造のデータを扱う――入れ子集合モデル

    サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。

    Chisei
    Chisei 2012/03/07
  • 削除フラグのはなし

    Query Optimization with MySQL 5.7 and MariaDB 10: Even newer tricksJaime Crespo

    削除フラグのはなし
    Chisei
    Chisei 2011/08/10
    削除フラグをただ作ればいいってもんじゃない。というエントリ。
  • 信じられないDB文化「固定長DB」でもあうんです。大規模コンシューマ向けサービスのRDB設計 - レベルエンター山本大のブログ

    ずいぶん時間があいてしまったけど、大規模コンシューマ向けサービスRDB設計の続き。 僕はこのプロジェクトを自分のRDBの知識を使って革新してやろうと思って臨んだ。 しかし結果として逆に、コンシューマ向けサービスに最適化されたRDBの使い方について教わることになった。 ※ あと、KVSでいいじゃんって言ってる人もいるけど、それはKVS導入の苦労を知らない人だと思う。KVSの苦労は後で書く。 僕らが最近手がけているのは、とても大規模なコンシューマ向けサービスだ。 100万人の契約ユーザが使い、1テーブルに1億レコード以上のデータを貯め、24時間止めることが許されず、 要求から応答までのターンアラウンドタイムが1秒以内という厳しいSLAのサービスである。 中でも僕はDBやフレームワークの設計とアーキテクトっぽいことを担当している。 僕がこの現場に来て、驚愕した文化が2つある それは「Join禁止

    信じられないDB文化「固定長DB」でもあうんです。大規模コンシューマ向けサービスのRDB設計 - レベルエンター山本大のブログ
    Chisei
    Chisei 2011/08/09
    ようはこれ『DBに頭を使わせるのではなく、Webアプリケーションに頭を使わせること。』
  • ソーシャルゲームのためのデータベース設計

    ・データベース的な観点でのソーシャルゲームの特徴 ・データモデル ・ソーシャルゲームに従来型RDBMSを使うべきか、�流行りのNoSQLで行くべきか ・負荷対策 (アーキテクチャ面) ・負荷対策 (ツール面) ・インフラエンジニアのキャリアについて

    ソーシャルゲームのためのデータベース設計
    Chisei
    Chisei 2011/01/16
    基本的なことだが面白い
  • PostgreSQL関連情報

    PostgreSQLバイブル サポートページ サンプル SQLの実行 レプリケーション レプリケーションの設定 pgpool関連情報 pgpool-IIのセットアップ pgpool-II:レプリケーションモード pgpool-II:マスタスレーブモード Streaming Replication はじめに クイックスタート 機能一覧 仕組み memcached mcb: memcached benchmark tool pgmemcached Postgres-XC ver0.9.2クイックスタート gtmのJava版 gtmの多重化 並行プログラミング The Programmer's Guide to the Parallel World MySQL [MySQLの基礎知識] MySQLとは MySQLの概要 データベースシステムの構造 データベースシステムへのアクセス方法 ストレージ

    Chisei
    Chisei 2011/01/08
    分かりやすい。
  • DBの「トランザクション分離レベル」が必要な理由  (PostgreSQLで,ファントム・リードを防止すべきサンプル事例) - 主に言語とシステム開発に関して

    データベースには,「トランザクション分離レベル」というものがある。 以下では,それが なぜ必要なのか? デフォルトのレベルでは,どうして駄目なのか? PostgreSQLでは,どうやってレベルを変更・確認するのか? などを取り上げる。 トランザクション分離レベル トランザクション分離レベルとは: 複数のトランザクションが同時に実行された場合に、他のトランザクションからの影響がどのくらい「分離」するか,のレベル。 ANSI規格では,4つのレベルがある。 READ UNCOMMITTED (一番低い) READ COMMITTED REPEATABLE READ SERIALIZABLE(一番高い) 徹底比較!! PostgreSQL vs MySQL 第3回:トランザクションの比較 http://thinkit.co.jp/free/article/060... トランザクション処理に詳しく

    DBの「トランザクション分離レベル」が必要な理由  (PostgreSQLで,ファントム・リードを防止すべきサンプル事例) - 主に言語とシステム開発に関して
    Chisei
    Chisei 2011/01/08
    わかりやすい
  • 分散トランザクションに挑戦しよう!

    では、複数のデータベースに対してアクセスする場合、どのようにすれば原子性を保証できるのでしょうか。これを解決するのが、図 2 に示す 2 フェーズコミットと呼ばれる方法です。 2 フェーズコミットでは、図 2 のようにトランザクションのコミット処理を 2 段階のフェーズにわけることによって原子性を保証します。ちなみに図 2 の UML 表記は、厳密ではありません。どのようなメッセージが交換されるのかについてのみ注目してください。 第 1 フェーズでは、まず、各データベースに対してコミットできる状態であるかどうかを確認するための準備 ( 図 2 の prepare ) の指示を送ります。これを受けた各データベースは、コミットできる状態かどうかをアプリケーションに伝えます。この処理を「投票する」と呼びます。コミットができる状態であれば、コミット予定の内容を確定させた後、アプリケーションに対して

    Chisei
    Chisei 2011/01/06
  • 大人のためのInnoDBテーブルとの正しい付き合い方。

    InnoDB関連でよくある質問のひとつに「テーブルのメンテナンスは何をすればいいんですか?」というものがある。InnoDBMySQL 5.5でデフォルトストレージエンジンとなるため、InnoDBのテーブルメンテナンス計画を立ようと思う機会も増えることだろう。そこで、今日はInnoDBのテーブルメンテナンスの各種方法となぜそうしなければいけないかという理由を解説しようと思う。 ANALYZE TABLEテーブルメンテナンスの代名詞といえば、インデックス統計情報の更新ではなかろうか。運用を続けるうちに、知らず知らずインデックス統計情報が狂ってしまい、思うような性能が出ない。RDBMSにはそのような問題がつきものであるが、InnoDBの場合、ANALYZE TABLEは不要である。なぜなら、InnoDBが自発的に統計情報を更新するからだ。InnoDBは以下の条件に適合すると、ANALYZE T

    大人のためのInnoDBテーブルとの正しい付き合い方。
  • PQ - naoyaのはてなダイアリー

    PHP でデータベースを利用するちょっとしたアプリケーションを作るにあたって、手軽に DB を操作できると良いなと思ってます。この辺も自分で作ってみようかなと思い立ち、まずはインタフェースを固めるべくそのプロトタイプを作ってみました。 $pq = new PQ(); $pq->dsn('mysqli://nobody:nobody@localhost/sample?charset=utf8'); echo $pq->query('users') ->where( array('age' => array('>' => 20)) ) ->where( array('mail' => array('-like' => '%@example.com')) ) ->fields("mail, name") ->order("updated desc") ->offset(0) ->limit(10

    PQ - naoyaのはてなダイアリー
    Chisei
    Chisei 2010/09/12
    メソッドチェインのこういう使い方面白いなあ
  • 「NoSQL」を上回る性能を目指す次世代型高速SQLデータベース「VoltDB」登場 | OSDN Magazine

    ベンチャー企業の米VoltDBは5月25日(米国時間)、オープンソースのデータベースシステム「VoltDB 1.0.1」をリリースした。高速、拡張性、ACID遵守などを特徴とする次世代DBMSとしている。 VoltDBは「Postgres」「Ingres」などのデータベースプロジェクトを共同で創始したMichael Stonebraker氏が設計したもので、Stonebraker氏が非常勤教授を務めるマサチューセッツ工科大(MIT)、ブラウン大学、イェール大学、HP Labsの共同研究「H-Store」がベースとなっている。 VoltDBは豊富なメモリやマルチコアCPUを備えたシステムに最適化されており、データを分散させてメモリ内に配置することで飛躍的に性能を改善しているという。データベースエンジンはマルチスレッドで動作し、データは分割されて各スレッドに配置される。それぞれのスレッドはロッ

    「NoSQL」を上回る性能を目指す次世代型高速SQLデータベース「VoltDB」登場 | OSDN Magazine
    Chisei
    Chisei 2010/05/31
    ACID維持か。
  • MongoDB 3.0.8 is released - MongoDB Blog

    General InformationDocumentationDeveloper Articles & TopicsCommunity ForumsBlogUniversity

    MongoDB 3.0.8 is released - MongoDB Blog
    Chisei
    Chisei 2010/04/06
    ヨコヨコ動画で使っていると聞いて
  • DB設計の神ツール「ERMaster」なら、ここまでできる

    DB設計の神ツール「ERMaster」なら、ここまでできる:ユカイ、ツーカイ、カイハツ環境!(11)(1/3 ページ) 無料のEclipseプラグイン「ERMaster」とは データベースのテーブル設計を行うときに皆さんは、どのようにしているでしょうか? いくつかの無料で利用できるツールが提供されているので、筆者はそれらを利用していましたが、最近「ERMaster」と呼ばれるEclipseプラグインの存在を知りました。 ERMasterは、ほかのツールに比べ、直感的で分かりやすいUI(ユーザーインターフェイス)に、カスタマイズ可能な、Excelで出力できるテーブル定義書、辞書機能など痒いところに手が届くERモデリングのツールです。稿では、このERMasterについてご紹介します。 ERMasterの主な特徴、8つ ERMasterには、主に次のような特徴があります。 【1】直感的で使いや

    DB設計の神ツール「ERMaster」なら、ここまでできる
    Chisei
    Chisei 2010/01/22
    Eclipseかー。重そうというのがまず第一印象。とりあえずDBDesignerでおk
  • MySQLでDBをコピーするには

    MySQLのデータベースをコピーするには、mysqldumpを使います。 mysqldumpはデータベースをダンプするためのユーティリティですが、他のMySQLサーバにデータをコピーするのに使うことができます。 ローカルで動いているMySQLの中で"source_database"から"dest_database"へデータをコピーするには、以下のようにします。$ mysqldump -u user_name -p -n source_database | ¥ > mysql -u user_name -p dest_database-nオプションは、CREATE DATABASEを出力に含めないようにするためのオプションです。これを付けることで、dest_databaseへデータをコピーできるようになります。 また、コピーしたいデータベースが巨大なときもあるかと思います。そのようなときに、

    Chisei
    Chisei 2010/01/20
    なかなか便利っぽい
  • MyISAM/InnoDBに関して - みかログ

    最近は常にInnoDBを利用しているので,MyISAM vs InnoDB にちょっとコメントしてみる. まず「Webアプリならトランザクションはいらないか」について. Webアプリで,トランザクションの重要性が高くないといっても,無いよりはあった方が良いはず. ちょっとしたシステムでも,たとえばユーザのテーブル,プロフィールのテーブル,日記の記事のテーブルなどでわけるわけで,それぞれのテーブル間の整合性がとれていないと問題が生じてしまうと思う. ハードウェア障害などでクラッシュしたときに,ユーザのテーブルにはレコードがあるけど,プロフィールにはレコードが無いケースとか,そういうケースが発生することを考えると,トランザクションは利用すべきじゃないのかなと. というわけで,JOINを使うようなアプリケーションであれば,トランザクションは使うようにすべき,というのが持論. それ以外でInnoD

    MyISAM/InnoDBに関して - みかログ
    Chisei
    Chisei 2010/01/11
    スレーブに対してSELECTかければ良いか。