06_データベース

社内にRedashを導入するまで

こんにちは!DBAを目指しているエンジニアの高嶋(@__1016t)です。
当社でダッシュボードツールである「Redash」を導入するときに課題となったこと、
それをどのように解決したのかを書きたいと思います。

Redash導入の背景と目的

ウエディングパークでは施策を考えたり、効果検証をするときのデータを
都度SQLを書いて抽出しています。

データの抽出はエンジニアが行うことになっているので、
ディレクターに必要な項目、抽出する条件をまとめて依頼をしてもらい、
担当エンジニアがヒアリングしながらSQLを書いています。

この運用でずっとやってきたのですが、施策や人が増えていく中で
以下のような課題が出てきました。

・たくさんの依頼によるエンジニアの工数圧迫
・工数を圧迫する懸念から、ディレクターが依頼をする心理的ハードルが高い
・ディレクターがほしいとおもったタイミングでデータを見ることができない

これらの課題を解決するため、Redashの導入が決まりました。

導入にあたってSuperset と Redashを比較した記事もあるので、ぜひご覧ください!
Redash と Superset を比較検証してみた

続きを読む

mysqldump と mysqlpump どちらが速くバックアップできるか比較してみた

こんにちは。エンジニアの阿久津です。
今回はMySQLの mysqldumpmysqlpump という2つのコマンドでバックアップを実施しどちらが速く処理するのか比較してみましたので、それを記事にしたいと思います。

mysqldumpとは

従来のMySQLデータベースのバックアップ/リストアに用いられるコマンドです。

mysqlpumpとは

MySQL5.7から追加された新機能で、 mysqldump の次世代となるコマンドです。

機能紹介

1. 並列処理(並列ダンプ)

複数のデータベース・テーブルを並列処理でバックアップすることができます。
MySQLサーバからデータを収集するために複数のスレッドを作成し、そのスレッドがそれぞれMySQLサーバへ接続してデータをまとめるためにキューに取得したデータを挿入する仕組みになっています。
オプションを何も利用せずにデフォルトで mysqlpump を利用すると、スレッド数は2つ、キュー数は1つでダンプ処理が走ります。
–parallel-schemas オプションと –default-parallelism を使うと、スレッド数とキュー数を調整しながら、ダンプを実施できるみたいです。

続きを読む

MySQL 5.7 の透過的暗号化をやってみたよ

こんにちは。SREチーム  インフラエンジニアの綿引です。

今回は MySQL の透過的暗号化 について記載したいと思います。
因みに透過的暗号化が使用できるのは MySQL 5.7.11 からですのでご認識のほど。

前回 は RDS の暗号化について軽く触れましたが、
その際はWebコンソールからボックスにチェックを入れるだけでした。

今回の MySQL の透過的暗号化を使用する場合には設定が必要です。
では早速やっていきたいと思います。

環境

・OS : CentOS 7.1
・データベース : MySQL 5.7.22

続きを読む

【DB設計入門|ER図|MySQL】コンビニレシートから学ぶ!データモデリング手法

はじめに

こんにちは、岩橋聡吾です。
今回は私が実務で行っているデータモデリング手法(実際手法とは名ばかりですが…)を紹介いたします。

データモデリングは、ご存知の通り、その後のシステム開発や拡張スピード、またシステム自身のパフォーマンスにも深く関わってきます。ここをどのように設計するかが開発プロジェクトを進める上で大きなカギになります。

なぜレシートなのか

モデリングする上で、その対象となるサービス・システムのビジネスロジックや仕様を深く理解する必要があります。レシートの背景にある「物を買う」という行為は至極身近なものであり、誰しもがそのレシートが発行されるまでの流れを経験で知っています。またレシートは、その小さな紙の中に「店舗」や「商品」など、WEBサービスで馴染みがある概念も多く含まれており、訓練をする上で非常に手頃なものです(「コンビニ」なるフレーズは掴みに使わせていただきましたw)。

今回の話のエリア

スクリーンショット-2017-03-20-12.02.47 (1)

今回は概念設計〜論理設計の前半までの内容を対象としています。具体的には「ある特定日のレシート一覧を出力できるシステム」のデータモデリングを行っていきます。

続きを読む

【MySQL】肥大化したInnoDBテーブルを圧縮機能で縮小する方法!

こんにちは。インフラエンジニアの綿引です。

早速ですが、今回はMySQLのテーブル圧縮について記載したいと思います。
但し、MySQL 5.7から実装された透過性ページ圧縮でなく、
MySQL 5.1のInnoDB Plugin時代からある圧縮です!

個人で運用しているMySQLが5.6なのですが、
ストレージが逼迫して来たので、旧来の圧縮を試してみました。

MySQL 5.6以前で「ディスク容量が足りない!」という方がいらっしゃれば、
参考にして頂ければと思います。

圧縮の仕組み

続きを読む

MySQL 5.7のマルチソースレプリケーション機能を検証してみました

はじめまして。メディア開発本部の綿引です。

本日は個人的に前から気になっていたMySQL 5.7のマルチソースレプリケーションについて検証したいと思います。

マルチソースレプリケーション

マルチソースレプリケーションとは1台のスレーブが複数のマスタを持つことができる仕組みです。
これまでのMySQLのレプリケーションはマスタとスレーブの関係が1:Nしか出来ませんでしたが、
この新機能を使用すればN:1が可能になります。

今まで『こんなにスレーブいらないんだけど冗長化は必須だよな。。』と思ったことがある方は興味を持たれるかと。

MySQL 5.7で他にも追加された機能はありますが、マルチソースレプリケーションはその中でも一番目を引く機能ではないかと個人的には思っております。

そして今回構築に伴い、MySQLだけでなくスレーブ側を
互換性のある”MariaDB”にしてみるといったことも出来ればと思いますので、
早速構築を開始したいと思います。

続きを読む

Docker(kitematic)でMySQLの開発環境を用意してみる

こんにちは。メディア開発本部の栗山です。

開発環境を手軽に構築したいなーと思ったので、Dockerを使ってみました。
今回はkitematic(カイトマティック)から操作する方法でやっていきます。

Dockerとは?

よく「コンテナ型仮想化技術」と説明されています。
コンテナ型仮想化技術とは、、、難しいですが、とても簡単に言うと
ひとつのPC(OS)上で複数のOS環境を操作できる技術、というかんじでしょうか。

Go言語で開発されているそうです。クジラがかわいくて癒されます。

Linux環境でしか動作しないと思いきや、windows用のToolBoxの中にVirtualBoxが含まれているので、
ダウンロードすればwindowsでも使えます。(mac用もあります)

※VirtualBoxとは 仮想化ソフトウェアの一つ。使用しているPCの中に、仮想的なPCを作成して、他のOSをインストールして操作することができます。

ToolBoxの中に、kitematicという、GUIからDockerを操作できるアプリケーションが一緒に入っていますので、今回はこちらを使っていきます。

続きを読む