こんにちは。バックエンドエンジニアインターンの田島です。 VASILYでは分析にBigQueryを使用しており、MySQLのデータを毎日BigQueryに同期しています。この同期処理を行うシステムは、約2年前にRubyで書かれたもので、プロダクトの成長に伴うデータ量の増加に耐えることができなくなり始めていました。そのため、同期処理を行うシステムを一から作り直しましたので、その詳細についてご紹介します。 弊社DEVELOPERSBLOGでは以前、『インターン生がデータ転送基盤を一から設計する、VASILYバックエンドインターンの紹介』としてシステムの概要・開発の流れをご紹介しましたが、今回はシステムの詳細についてご紹介します。 (photoクレジット *1) データ同期ツールの紹介 新たなデータ同期システムとして、次のように利用する社内ツールを作成しました。 以下のような環境変数を設定し、

この記事は、MySQL Casual Advent Calendar 2017の20日目の記事です。 煽り気味のタイトルですがみなさん SHOW ENGINE INNODB STATUS 読んでますか? SHOW ENGINE INNODB STATUS \G 見づらいのなんとかならんのか。— そーだい@初代ALF (@soudai1025) 2016年12月20日 わかる。でもMySQLの振る舞いを知る中でSHOW ENGINE INNODB STATUSを読まざる得ない場面はそこそこあります。 どんな時に必要になるのでしょうか? そこでSHOW ENGINE INNODB STATUSにまつわる話を書きます。 SHOW ENGINE INNODB STATUS をまず読みやすくする まず末尾に \G を付けましょう。 これで3倍読みやすくなります。 次に pager less -S を
普段は GAE でgolang を使っているけど、golang でmysql 使ったことないってのもどうなのかな? と思ったので、 ちょっとしたサンプルアプリを通してmysql を使ってみようと思った。 で、ORM どーしーよーかなと思って、 色々調べた記録です。 標準パッケージORMに求める要件 structにマッピングできる テーブル名とかstructに変な命名規則を適用させる必要がない 生SQLが書ける 発行されるクエリがイメージできる パフォーマンスが極端に悪くないgormgorpdbr xorm この記事を書いた後に知ったORMsqlboiler おすすめは? 結局何を使ったのか? 標準パッケージ標準パッケージが良い感じであれば、ORM は不要だと思ったので確認してみた。 標準パッケージではdatabase/sql を利用する。 https://golang.
リレーショナルデータベースで管理しているデータを Elasticsearch で検索・分析したい場合、Logstash が便利です。Logstash とは?Logstash はオープンソースのサーバーサイドデータ処理パイプラインです。様々な数のソースからデータを取り込み、変換し、指定された任意のストア先にデータを格納することができます。 処理の内容はシンプルで、Input ステージでソース元の接続先情報を管理し、Filter ステージで変換をし、Output ステージで格納先接続先情報を定義します。Input 及び Output プラグインはデフォルトで様々なソースをサポートしています。そのため、Logstash を使えば、プログラミングレスでMySQL のデータを取り込み、変換し、Elasticsearch へインデックスすることができるのです。 事前準備MySQL と Elasti

MySQL Casual Advent Calendar 2016 - Qiitaの6日目の記事です。 AdventCalendar自体初参加でドキドキ、してたら、成り行きで2日連続。 コレ用のきれいなエビデンス取れるような環境要していなかったので、普段より荒っぽいですが、Casualな感じで失礼します。 大きなテーブルを繰り返しSELECTしてたら、挙動が変わったんですよ。 バッファに載っているなら載っているで早いだろうし、載っていいなら最初ガッツリ遅くて、次からグイっと速くなるだろうと思っていたんですよ。 バッファに載りきらないなら、何回やっても遅いだろうと思っていたんですよ。 で、ちょいと計測的なことをやってた関係で、同じSQLを何度か叩いて平均、中央を見ようと思っていたんです。 そしたら、 45.71秒、44.90秒、24.44秒、13.32秒、13.12秒・・・ と、段階的に応答
こんにちは、技術部開発基盤グループの小室 (id:hogelog) です。 みんなのウェディングは OSS となった Kuroko2 を早速導入したので、その Kuroko2 の導入方法をブログにて共有します。 何故 Kuroko2 を導入したか みんなのウェディングではジョブ管理ツールとして主に Rundeck を利用していました。汎用のジョブ管理ツールとして開発されている Rundeck は非常に多機能で様々な処理を柔軟に実行できます。雑多なバッチ処理が稼働していたみんなのウェディングのシステムを一つのジョブ管理ツールに集約させるには非常に便利なものでした。 しかし運用を続けるうちにいくつかの難点が見つかってきました。 スケジュール実行がいきなり過去のジョブ定義に巻き戻る(ことが稀にある) https://github.com/rundeck/rundeck/issues/1447 M

Question regarding writeboost andMYSQL · Issue #146 · akiradeveloper/dm-writeboost ·GitHub 最近ライトブーストを試し始めたユーザだが、他人に対するリスペクトがないため「お前の質問には一切答えない」と言って打ち切った。出来るだけそういうことはしたくなかったため、過去に同様のことをした時は忠告する程度に止めていたが、再発したため追放することとした。(Issue 141でも同様に、foolなど罵る言葉を使っていたため忠告した) OSSでは、会ったこともなく、それこそ本名も知らない人がコミュニケーションをとることになる。言語は英語だが、お互いにネイティブである方が稀である。そこで大事なのは、他人をリスペクトする気持ちだ。まじでリスペクトする必要はない。本当にリスペクト出来ないなら去ればいいだけだし、リスペ

Google、MySQL互換の第二世代「CloudSQL」正式リリース。ベンチマークを公開し、AmazonAuroraより高速だとアピールGoogleは、Google Cloud Platformで提供しているマネージドサービスのMySQL互換データベースである「CloudSQL」を正式版としてリリースしました。 CloudSQLは2011年に発表され、2015年12月には性能を強化した第二世代が登場、最大10テラバイトのデータ容量とインスタンスあたり最大104GBメモリを提供し、最大2万IOPSの性能に達すると説明されていました。 正式版リリースにあたり、同社はブログ「Google Cloud PlatformBlog: CloudSQL Second Generation performance and feature deep dive」で競合となるAmazonクラウド

業務でGitHubを使っていて、developブランチにマージされたらステージング環境として使っているAWS上のサーバにデプロイされるようにしています。この時点で割と便利なんですが、マージ前にデザインや挙動を確認したいというケースも多いのでこの部分何とかしたいなぁと思っていました。 Review Appsとは 最近、HerokuはGitHubとの連携を強化しています。以前だったらGitHubの特定のブランチにPushされたら、Herokuにデプロイする ということを実現しようとすると、CircleCIなどのCIツールを使ってやるのが一般的でした。 そこが最近変わりました。Heroku側からGitHubと直接連携して、「GitHubの変更を受けてHerokuにデプロイ」がHeroku側の画面でポチポチやるだけで簡単に実現できるようになっています。 この時点でかなり便利なのですが、さらに「P

この記事ははてなデベロッパーアドベントカレンダー2015の12月24日の記事です。 昨日は id:stefafafan さんのエンジニアと英語でした。 こんにちは、こんばんは。 クリスマス・イヴですね、皆さんはどのような一日を過ごされる(た)のでしょうか。 僕は一人です。 改めまして、先日初めての合コンを経験/失敗して二度と行かないと誓ったはてなの id:ichirin2501 です。今回は小ネタとしてMySQL(InnoDB)のBULK INSERTにおけるデッドロックの話をしようと思います。ただ、外部キー制約が絡むと複雑になるので今回は触れません。それについてはこちらを参照ください。 あ、タイトルはオマージュです*1。Topic 検証環境 INSERTのデッドロック 避けられないケース もしくはロックする リトライ処理に注意 初期データ Duplicateの場合 Deadlockの
この記事ははてなデベロッパーアドベントカレンダーを始めます -Hatena DeveloperBlogの最終日の記事です。昨日は id:ichirin2501 のMySQLでINSERTのデッドロックに嵌る人を1人でも減らすために - ichirin2501's diary でした。 こんにちは、id:stanaka / @stanaka です。今年のはてなデベロッパーアドベントカレンダーも最終日です。 2015年もSwiftのOSS化から、JavaScriptでデスクトップアプリを書けるElectronや、 Chainer, TensorflowなどのDeep Learningライブラリ、AWS RDSのAuroraの東京リージョンでのリリースなどなど、 大小様々な技術が登場しました。はてな社内でも新しい技術の採用方針については時々議論になるのですが、 社内向けに書いた技術選択を
mycliBlackLivesMatter We value the diversity of our community. We strive to amplify the voices of the oppressed to eradicate racism and xenophobia. We ask our community to stand together in support of theBlack community. MyCLI is a commandline interface forMySQL, MariaDB, and Percona with auto-completion and syntax highlighting. Source: https://github.com/dbcli/mycli Bug tracker: https://githu
このエントリでは、Time-basedSQLインジェクション、すなわち時間差を利用したSQLインジェクションが意外に実用的だったという報告をします。デモ映像ありです。 はじめに Time-basedSQL Injectionという攻撃があります。これはブラインドSQLインジェクションの一種で、ある条件の場合に一定時間(例えば5秒)スリープし、そうでない時との応答時間の差で情報を盗もうというものです。1回のHTTPリクエストで1ビットの情報が得られるので、それを積み重ねることによって、いくらでも情報を盗めるはずです…理論的には。 しかし、「理屈はそうでも、時間が掛かりすぎるよね」ということで、深くは追っかけていませんでした。SQLインジェクションの検査には有効でも、悪用としての実用性はあまりないと考えていたのです。 きっかけ きっかけは、以下のYahoo!知恵袋に以下の質問です。SQL
現実的なWebサービス環境において、Docker化によるパフォーマンス低下がどの程度のものか調査するために、 ISUCON4 の予選問題のうち、Nginx とMySQL 部分をDocker 化してベンチマークをとってみた。 典型的なWebサービスシステムの3層構造(Proxy, App,DB)を構築し、ベンチマーカーにより高ワークロードを実現できるので、ISUCON の予選問題は適当な題材といえる。Docker のパフォーマンスについて留意することは先日書いたエントリに全て書いてる。 上記のエントリを要約すると、Docker のパフォーマンスについて重要なこととは storage-driver の選択 (AUFS or Devicemapper or ...) Volume の ON / OFF AUFS などの差分ファイルシステムをバイパスするかしないか Hostnetwor

アクセスランキングを作ってみよう! 今、Rails4 を使ってアクセスログからランキング作ってみたいなぁーと思ってたんですが、みんなどうやってんだろうって聞いてみたところ、 Fluentd ってのを組み込むだけで簡単に集計とかできるよーって話だったので、使ってみました。 Fluentd とは まず読み方は、 「ふるーえんとでぃー」であって、「ふるーえんど」とかじゃないっぽいです。d はたぶんデーモンの d 。 色々説明面倒なんで省略しますが、ログ収集元とか出力先が簡単に設定できて、自分の欲しい形でログ保持できますよーって感じっぽい。なので、 「シェルスクリプトで処理した tail の処理結果をファイルに」「nginx から出力されたアクセスログを mongoDB に」とかそういう処理を自前で書く必要なく、簡単な設定だけでいけちゃう。 詳しくは → 柔軟なログ収集を可能にする「fluentd

山本隆の開発日誌Kotlin/Swift/Flutter/JavaScript/TypeScript/PHPでWindows/macOS/Android/iOS/Webアプリなどを作ってます 2007年4月29日追記:Ruby onRails 1.2対応版を作成しました。Ruby onRailsの練習に、簡単な掲示板を作成してみる。 データベースの作成MySQLを使用して、データベースとテーブルを作成する。 データベースを作成。CREATEDATABASE `bbs`; テーブルを作成。CREATE TABLE `items` ( `id` INT NOT NULL AUTO_INCREMENT , `name`TEXT NOT NULL, `body`TEXT NOT NULL, PRIMARY KEY ( `id` ) ) nameは投稿者名、bodyは本文。 プロ

「サイボウズ・アドベントカレンダー2012」も、残すは今日と明日のみです(これまでの記事一覧)。 こんにちは、社内インフラ担当の稲生です。今回はWordPressサーバの簡単な改善方法と負荷テストによる比較のお話です。 一般の商用サイトでも利用可能な「WordPress」。サイボウズのWebサイトでも CMS で使ったり、有料Blog サービスから移行したりと、その恩恵に与っています。そんなWordPress 環境ですが、最近サーバへの負荷が高い? という連絡を受け、調査がてら負荷テストと環境改善に取り組んだ時のことを紹介します。 ※ 因みにサーバ高負荷の原因はWordPress と全然関係ありませんでした。詳細は本稿の主旨と異なるため省きますが、怪我の功名ということで。WordPress は良い子ですよ。 テスト環境を用意する テスト用に以下の仮想環境を用意しました。CPU Xe
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く