Rails Developers Meetup 2018: Day 1 発表資料 https://techplay.jp/event/639872
![365日24時間稼働必須サービスの 完全無停止DB移行](https://cdn-ak-scissors.b.st-hatena.com/image/square/b01b647accaa7c418aa8e07c68497ebf95c85b39/height=288;version=1;width=512/https%3A%2F%2Ffiles.speakerdeck.com%2Fpresentations%2Fdda5f36541104f60872c035430ada7f3%2Fslide_0.jpg%3F9698468)
初めまして。サイバーエージェント技術本部インフラエンジニアの@prog893です。今回は「AWA」という音楽ストリーミングサービスのMongoDBクラスタの復旧時間を短縮するために行ったインフラの改善について紹介したいと思います。復旧時間が12時間から55分まで短縮できたのですが、皆さんの参考になれば幸いです。(※注意:今回紹介する施策はAWAのインフラ構成や設定のものであり、他の環境で同じような効果が得られるとは限りません) AWAのデータストア構成 まず、現在のデータストア構成について軽く説明します。こちらの図でAPIサーバ,MongoDBに関連する構成の概要を示します: AWAのデータストア構成概要 メインのデータストアとしてはMongoDBを使っており、MongoDBのインスタンスはAWSで管理しています。APIサーバ、MongoDBのインスタンスがそれぞれのプライベートサブネット
言い訳から始めます。この記事を(途中まででも)読んだ人は、次のように言いたくなるでしょう。 『理論から学ぶデータベース実践入門』は良い本なのか悪い本なのか、いったいどっちなんだよ?! この本は間違いや説明不足があり、誤読されやすい表現も多く、その点では残念な本です。しかし、面白いアイディア、するどい観察も含まれていて、行間を補い深読みすれば、多くの示唆を得られる本でもあります。 よって、「良い/悪い」の二択では答えられません。良い点と悪い点の両方を、できるだけ客観的に記述するしかないのです。それをした結果、長い記事となりました。 内容: ことの発端: zhanponさんの批判 奥野本擁護と奥野本批判 僕の擁護・批判の方針 zhanponさんの指摘の再検討 1. 論理的な矛盾とデータの不整合を混同している 2. 命題論理の限界についての説明がおかしい 3. 古典論理の定義を間違えている 4.
今年の5月1日に、仙台市内のホテルで多重予約のトラブルが発生したと報道されています。 部屋数203室の仙台市のビジネスホテルで、9月18~23日の宿泊予約を数千件受け付けるトラブルがあった。アイドルグループ「嵐」のライブが宮城県内で開催される期間だった。インターネットでの申し込みが殺到し、システム障害が起きたとみられるという。 トラブルがあったのは、仙台市泉区の「ホテルルートイン仙台泉インター」。ホテルなどによると、9月19、20、22、23日に宮城スタジアム(宮城県利府町)で嵐がライブを開くことが明らかになった後の5月1日午前5時ごろ、ネットを使った予約申し込みが殺到していることに気づいたという。 203室のホテルなのに「予約」数千件 嵐公演で殺到か:朝日新聞デジタル より引用 5月1日の朝に何があったのか調べてみると、この日の早朝にテレビや新聞でコンサートの情報が流れたようですね。 お
新規WEBシステムのデータベース設計を軽く眺めていたところ、不思議な定義を見つけました。 user テーブルがマスターテーブルの扱いになっています。 設計者に聞いてみると「業務系システムではユーザーテーブルはマスタですよ?」とのこと 業務系ではそれもありうるな、と一定納得しつつ そもそも何故マスターとトランザクション(ユーザー) テーブルを分ける必要があるのか? という辺りから振り返り、ユーザーテーブルが何に分類されるべきか再考してみました。 テーブルを分類する目的について まずはググってみる マスターデータとは - IT用語辞典 Weblio辞書 マスターデータとは、主に企業が社内向けや業務向けなどで構築する情報システムにおいて、製品や顧客や会計など多くのデータベースで共通となる、基本的な情報のことである こちらのページのようにマスターテーブル(あるいはマスターデータ)とトランザクション
fuelPHP の db.php で default 以外の場合に 以下のエラーが出た。 Database type not defined in "xxx" configuration or "xxx" configuration does not exist 結論から言うと、以下の2点で問題があった。 1.db.php の設定方法にtypeを設定しなかった。 2.DB接続前に Config::load() で設定ファイルを読み込んでいた。 まずは 1.db.php の設定方法にtypeを設定しなかった。 について。 エラーメッセージからも分かるように、 以下のようにDB設定の type が存在しなかった。 <?php 'xxx' => array( 'connection' => array( 'dsn' => 'mysql:host=localhost;dbname=db1', 'u
最近データベースというかSQLについて勉強しているんですが、奥が深いですね。この前の第9回中国地方DB勉強会のときに聞いたrank関数を使って、ランキング機能をリファクタリングしよう!と思って最近頑張ってます。というのも、複雑なクエリ(遅い)を業種数分(10回くらい)呼んでいたため、Herokuだと結構ギリギリの速度になることもあったので、なんとかしなければ!と思っていたのです。 とりあえず、私の開発環境を載せておきます。 Mac Yosemite Ruby 2.2 Rails 4.2.1 PostgreSQL 9.3.4 ひとまずrank関数を使うところまで まず、NewRelicを使ってActiveRecordが出力しているSQLを取得し、それを0xDBEのコンソールに貼り付けて、rank関数を使って業種でパーティションしてランキングを出すところまでしてみました。rank関数は、関数名
DBのスキーマ、皆様どのように管理されているでしょうか。 Railsを利用されている方の多くは、ActiveRecordのマイグレーションを利用して管理をされているかと思います。 私もいままでいくつかのRailsプロジェクトに関わってきましたが、 ほぼ全てのプロジェクトでActiveRecordのDBマイグレーションを利用してきました。 (一部のプロジェクトはActiveRecordを使っていないため、マイグレーションも独自のものを利用しています) ActiveRecordのマイグレーションでは、DBスキーマ変更の差分情報をマイグレーションスクリプトとして保存しておきます。例えば、新しいテーブル「users」を作成する場合は、下記のようなマイグレーションスクリプトを作成します。 class AddUsers < ActiveRecord::Migration def up # ここにマイグ
astahを使って、T字形ERによるデータモデリング手法を解説した資料があったのでメモ。 これはすごくためになる。 自分なりの理解をまとめるためにメモ。 間違っていたら後で直す。 【元ネタ】 Twitter / akipii:凄く良い資料!dddosaka勉強会の人は必読でしょう笑 RT @hatsanhat: データモデリング入門ーastah*を使ってTMの手法を使う http://www.slideshare.net/mobile/inamiK/ss-36665472 … 大変親切にわかりやすく解説されています。 【1】T字形ERのデータモデリングをastahProfessionalのER図でどのように表現すべきか、を解説している。 非常に丁寧で分かりやすい。 個人的には、既存システムのリバース・エンジニアリングの設計技法を選択するとしたら、T字形ERが最強だと思っている。 既存の画面
2ヶ月前にインフルエンザとウィルス性胃腸炎でひどくダメージを受けた増田(@masudaK)です。アメーバピグは2009年2月に始まったサービスで、FLASH・Javaで作られています。そして、データストアにMySQLを用いてます。本記事では、わたくしが2年ほど見続けているアメーバピグのDB環境について構成や、日々どのようにして問題と向き合っているかを紹介したいと思います。インフラ寄りの内容が多いため、アプリ寄りの話は弊社生沼の資料を御覧ください。 1. 構成と規模 1.1. 構成 まず構成ですが、読み書きはすべてマスターへ行うようにしています。そのため、スレーブには参照を向けず、ホットスタンバイとして使っています。バージョンに関しては2012年中旬までは5.0を使ってましたが、DC移転にあわせて5.5にあげました。ロック機能を用いたシャード構成をしてまして、2014年3月現在6シャードにな
汎用的なツールで作るDB→Excel→メール配信の自動システム:Windows環境でちょっとした定型業務を自動化する(1/2 ページ) データベースから抽出したデータをExcelブックのレポートにまとめてメールで配信する。よくある業務だが、自動化するにはどうすればよいのか? 筆者が実際に作成して現在も運用中のシステムを例に、幅広く応用しやすい汎用的なツールによる自動化手法を説明する。 連載目次 社内のデータベース・サーバから定期的に必要なデータを抽出し、レポートとして配布する、というのはよくある業務だ。レポートの体裁を整えたり配布先のメール・アドレスを設定したり、といった作業は定型であり、しかも手作業だと意外に時間を食われるので、ぜひ自動化したいところだ。 ただ、自動化といってもその手法はさまざまだ。できることなら、多くの業務に応用しやすい「つぶしの効く」手法を身に付けるのが望ましい。そこ
JOIN 禁止の話に、いまだに絡んでくれる人がいた。 ■「艦これ」から、ソーシャル系のサーバ構成を考える - SQLer 生島勘富 の日記 僕が以前に書いた本テーマに関するエントリは以下の3つ。 ■信じられないDB文化「Join禁止」に「固定長DB」、、でも、合うんです。大規模コンシューマ向けサービスのRDB設 ■信じられないDB文化「固定長DB」でもあうんです。大規模コンシューマ向けサービスのRDB設計 ■ホント信じられないDB文化だけど、統計情報固定化はマジでアリ ちょうど折よく、ウチの会社のオラクル女子が書いたエントリの続きも公開されました。 ■一緒にまなぼ!「hiromi と楽しむOracleパフォーマンスチューニング!」【Vol.2 Statspackを見てみよう】 ということで僕の中でDB熱が盛り上がってきたので返答的なエントリを書きます。 「とりあえずメモリだけ気にしておけ」
JdbcRunner 1.3.1JdbcRunner 1.3.1をリリースしました。JdbcRunnerは各種RDBMSを対象としたオープンソースの負荷テストツールです。スクリプトでトランザクションを定義して多重実行し、スループットとレスポンスタイムを測定できます。またJdbcRunnerにはOracle Database、MySQL、PostgreSQLを対象としたテストキットが付属しており、ユーザーが独自にスクリプトを作成する以外にこれらを用いたベンチマークを行うことも可能です。 dbstudy.info JdbcRunner 1.3.1では最新環境への追従と細かい不具合修正を行いました。機能追加はありません。 動作要件をJava 8 → Java 17へ変更 PostgreSQL JDBC Driverを42.6.0へ更新 MySQL Connector/Jを8.0.32へ更新 My
DB設計の神ツール「ERMaster」なら、ここまでできる:ユカイ、ツーカイ、カイハツ環境!(11)(1/3 ページ) 無料のEclipseプラグイン「ERMaster」とは データベースのテーブル設計を行うときに皆さんは、どのようにしているでしょうか? いくつかの無料で利用できるツールが提供されているので、筆者はそれらを利用していましたが、最近「ERMaster」と呼ばれるEclipseプラグインの存在を知りました。 ERMasterは、ほかのツールに比べ、直感的で分かりやすいUI(ユーザーインターフェイス)に、カスタマイズ可能な、Excelで出力できるテーブル定義書、辞書機能など痒いところに手が届くERモデリングのツールです。本稿では、このERMasterについてご紹介します。 ERMasterの主な特徴、8つ ERMasterには、主に次のような特徴があります。 【1】直感的で使いや
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く