Database JUNKY

MySQL,MariaDBを中心としたブログです

画像情報テーブルの作成 ~ソーシャルサービス系のDB構築

f:id:hit10231023:20160519173030j:plain

ソーシャルサービスにおいて、一番大切な部分はサービスの軸はなんなのか?です。instagramだったら写真ですよね。youtubeだったら、動画ですよね?facebooktwitterだったら・・なんでしょう(笑)

すべてのサービスにおいて、大切なのはコンセプトです

\例えば、東京⇔大阪[片道]2,800円~/
高速バス・夜行バスの予約は【ウィラートラベル】

どんなに洗練されたプログラムであっても、

どんなにすぐれたデータベースであっても

コンセプトがしっかりしていなければ、まったく意味がなく、さみしいサービスができちゃう危険性があります。

ただし、ここでは、サービスについて説明したいわけではないです。すみません

今回は、

画像を共有するソーシャル

みたいのをサンプルにして、考えてみようと思います

和牛にこだわった最高級ハンバーグを贈り物に

続きを読む

ソーシャルサービス系のデータベースを構築する

f:id:hit10231023:20160514015145j:plain

私、データベースエンジニアです

iPad Pro Wi-Fiモデル 128GB ML0R2J/A ゴールド(iOS) Kindle Voyage Wi-Fi、キャンペーン情報つきモデル、電子書籍リーダーKYOCERA au Qua tab KYT31 WhiteHuawei docomo dtab Compact d-02H Silver

データベースエンジニアとは

仕事を進める上で、多数の別部門との協力が必須となるデータベースエンジニアには、高いコミュニケーション能力が求められます。また、物事を論理的に考えることが好きな方もデータベースエンジニアに適性があります。そして、ビッグデータ時代に通用するよう、データを戦略に活かすためにビジネス全体を俯瞰して見る能力や利益感覚も大切です。

昨今データベースエンジニアを専門で募集している企業って多いですよね。 かくいう私も、データベースを始めてから、もうはや15年くらい、さまざまな企業でやらしていただいております。プログラム(コード)とか書いていた時期もあるのですが、コードの世界って数年で目まぐるしく進化しており、私にとっては都合の悪い形で、ついていけない世界になりました。そこで、私は、今後エンジニアとして生き抜く手段はと考えた時に、データベースにいきついたわけですが、データベースを選択した理由は、

  • データベースは、製品自体は変化するものの、基礎的な部分は数十年変わっていない

  • データベースは、INPUT / OUTPUT の開発に集中でき、イメージが湧きやすい

  • データベースは、すべてのサービスのコアなので、企業にとって最重要なポジション

続きを読む

ソーシャルサービス系のデータベースを構築する~ ユーザー情報編

ユーザー情報テーブルを作成してみよう

今回、どんなサービス、およびシステムでもありそうなユーザーマスタテーブルを設計/構築してみたいと思います ただ、テーブルを作る、登録しただけですと、ちょっとつまらないので今回は、ダイナミックカラムと、PASSWORD関数を利用してみようと思います

f:id:hit10231023:20160510112622p:plain

キングジム パスワードマネージャー  ミルパス PW10 ブラック

キングジム パスワードマネージャー ミルパス PW10 ブラック

Kindle Paperwhite Wi-Fi、ブラック

続きを読む

ソーシャルサービス系のデータベースを構築する~データベースの作成

データベースを作成する

まず、ソーシャルサービス系のデータベースといってもデータベースという大きな鉢がないとどうしようもならないため、データベースの作成をする必要があります。 データベースの作成といっても簡単で、ほんと、数秒で作成が終わっちゃいます!!!! 文字コードの部分だけきにすればいいかな?と思いつつ現在のデフォルトは、utf-8なので きっとそれも気にしなくてもいいかもしれません

f:id:hit10231023:20180309104332j:plain

コマンドとしては、CREATE DATABASE を利用します

Mariadb Essentials 実践! CentOS 7 サーバー徹底構築

続きを読む

フォロー/フォロワーの構築 ~ソーシャル系のDBを構築する

フォロー/フォロワーのテーブル設計

f:id:hit10231023:20180309104332j:plain

f:id:hit10231023:20160517190757j:plain

ソーシャルネットワーク系のデータベースでフォロー/フォロワーってどんなしくみで設計しているの?なんていうのを中心にまとめてみました

NURO光キャンペーン ネットのみでも必ず3万円が貰える!

有効な暇つぶしの方法とは。。

続きを読む

MySQL スキーマ内に存在する全ての索引を一括で抽出するSQL

mysql でテーブルの索引がどう設定されているのか知りたいときがあると思うのですが。その場合、

mysql>
show index from TABLE_NAME;

で確認できます

でわ、スキーマ内の全てのテーブルの索引を抜き出したい場合はどうするか? というわけでinformation_schemaを利用して対象データベースに登録されている全ての索引を一括で抽出するSQLを考えてみました。 索引の情報は、information_schema.STATISTICSに格納されているらしく、以下のSQLで確認できました。

f:id:hit10231023:20180309104332j:plain

続きを読む

GROUP_CONCATを利用して、列名を列挙したSQLを生成する

MYSQLには、GROUP_CONCATというすばらしい関数があるのですが、ような複数のレコードのとある値を、一行にまとめるということができる関数で、そりゃーもう便利です!!今回はこのGROUP_CONCATを利用して、SQLからSQLを生成するなんていうサンプルを作ってみました

f:id:hit10231023:20180309104332j:plain

続きを読む

指定ディレクトリ内にあるテキストファイルの特定の文字列を一括で更新

指定ディレクトリ内にあるテキストファイルの特定の文字列を一括で更新するワンライナーです。 当該コマンドは、サブディレクトリの特定文字列も置き換えます。

f:id:hit10231023:20160510124713p:plain

grep -lr 変更前文字列 * | xargs sed -i 's/変更前文字列/変更後文字列/g'

以上です。たとえば、shell内に記載している、SQLのテーブル名を一括変更するのに重宝するかもしれないし、重宝しないかもしれません

grep -lr TABLE_A * | xargs sed -i 's/TABLE_A/TABLE_V/g'

当該コマンドを実行すると、ざっくり、既存のファイルを置き換えるので、作業前、あらかじめバックアップしておいたほうがいいかもしれませんね。

MySQL:レプリケーションエラーをスキップする

日々の運用の中で、レプリケーションエラーが発生した場合、原因が分かっているものは、とっととスキップさせて先に進めたいですよね? そんなときには、SQL_SLAVE_SKIP_COUNTERを設定することでレプリケーションのエラーをスキップすることができます

Fire TV Stick

Fire TV Stick

MariaDB&MySQL全機能バイブル

MariaDB&MySQL全機能バイブル

Mariadb Essentials

Mariadb Essentials

mysql>
STOP SLAVE ; 
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; 
SELECT SLEEP(1); 
START SLAVE; 
SHOW SLAVE STATUS\G

一方、MariaDB 10.X でのマルチソースレプリケーション環境下でのエラースキップの場合は、以下のような感じで行うことができます

mysql>
SET @@default_master_connection='<対象レプリケーション名>'; 
STOP SLAVE; 
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; 
SELECT SLEEP(1); START SLAVE; 
SHOW SLAVE STATUS\G

以上、そんな感じで

f:id:hit10231023:20160510153222j:plain

SQLだけで、メールアドレスの@以前の文字を置き換える

SQLって奥が深いです。SQLだけで、ほぼデータの加工が行えます。 今回はメールアドレスをマスキングかけるというのを試してみたいと思います

f:id:hit10231023:20160510153145p:plain

続きを読む

MySQLのオンラインバックアップ方法(mysqldump)

いままで使ったことのあるmysqldump でもバックアップの方法をメモ

dumpするたびに、毎回毎回オプションを調べている時間がもったいないので、ほぼ自分用にメモしていきます。今後、追記してく予定なので、流れ次第で、内容が重複しちゃうかもです ほぼ、このあたりをこなしておけば、問題なくさくっとできちゃうと思います

f:id:hit10231023:20180309104332j:plain

続きを読む

KeepAlivedとMySQLのタイムアウト設定は必ず確認して!!

MySQLKeepAlivedロードバランサーを実現というのは結構ある話ですが、それぞれのセッションタイムアウト値が違うため、いざサービスを運用する!!なんて時に思わぬ落とし穴があったります。そのための注意書きです

f:id:hit10231023:20180309104332j:plain

続きを読む

sshで接続しているユーザーを強制的にログアウトさせる方法

なにかの事情で、一部のlinuxユーザーを削除したい時とかそんな時ってありませんか?削除したいと思った時に削除対象のアカウントがログイン中だったなんて時はありませんか? その場合、OSの再起動をかけてから対応しますか?OSの再起動が許されない環境の場合はどうしますか? そんな時には、対象のアカウントをkillしてしまいましょう。というメモです

f:id:hit10231023:20180308234003p:plain

続きを読む