読者です 読者をやめる 読者になる 読者になる

Database JUNKY

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

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

Linux Linux(CENTOS) MySQL MariaDB DDL SQL mysqldump follow follower

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 の開発に集中でき、イメージが湧きやすい

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

なんか、かっこいい!とか思って始めたというのもあります、でも、実際やってみると、データを管理していれば良いというわけではなく、各プロジェクトに参加し、いかに効率よくデータを提供することができるかというのを考えつつ、日々苦慮している次第です。引用でも描かれているとおり、多数の別部門との協力が必須となるデータベースエンジニアには、高いコミュニケーション能力が求められます、データベースエンジニアというと堅苦しいイメージもあるかと思います。いわれたままデータベースを構築し、管理をしているだけでは、自己のスキルもサービスもきっと成長しないでしょう。それだったら、誰でもできます。

どうせなら、攻めのデータベースエンジニアを共に目指していきましょう!! バックエンドではありますが、データベースは、基礎通り普通に使えばいいのです、なんて古い考えは捨ててください。自分が完全に制御しきれるという自信があるのであれば、どんどん新しい技術を実装していきましょうよ!!

多機能で自由なショッピングサイトの構築が可能【ECサイト基本システム】

そんなこんなで、データベースの設計のことはじめとして、一番楽しい、ソーシャル系の設計について、これから記載していこうと思っております、

私自身、データベースの参考書とか見て設計、構築するのが苦手なタイプなので、これから掲載していくものは、ほぼ、経験に頼った運用で、正解か不正解かは、正直なところわかりません。ただ、どこかのサービスの下で私の設計、運用しているデータベースが今も元気に稼働しているので、あながち間違ってはいないのかな?と思っております

ソーシャルの設計というほど、かっちりしたものではないですが、これから俺、データベースエンジニアを目指すぞ!なんて方は是非読んでください!!

前置きが長くなりましたが、以降掲載していく内容については、各サービスのすべてを掲載しているわけではありませんが、基礎となる部分は抑えているつもりです。

ソーシャルサービスのデータベース設計

ソーシャルでも共通して存在するのが、フォローとフォロワー、およびLIKE(いいね!)です。

異なるのが、その内容(コンテンツ)ってことですかね。

「○○を主体としたソーシャルネットワークサービス」というが主題で、その○○が、違うだけで、基本的に、DBの構造はあまり変わりません。 変わるのは、コンテンツだけです。(たぶん。。。

また、見せ方が違うだけで、データベース側のスキームってほとんど変わりません。

データベースエンジニアとして、このようなプロジェクトで活躍するためには

・データベースを事前に設計する ・データベースの設計のルールを決める ・ビジネスロジックをある部分データベース側で吸収する

というあたりかな?と思います

逆にアプリケーション開発を先行させ、その流れでデータベースを作っていくという流れにしてしまうと、スキーマの設計のルールおよび構造が破たんする危険性も高く、 プロジェクトの序盤から参加して、先行して設計を進めることが、スムーズに進める秘訣だと考えております。

データベースエンジニア養成読本 [DBを自由自在に活用するための知識とノウハウ満載!] (Software Design plus)

今回、ソーシャル系のデータベースを構築するというシリーズで、あくまでもデータベース視点での話を進めていきます。理由は、私は、プログラムよく知らないからw でも、データの入力と出力を把握できるわけですから、アプリケーション開発の手助けをすることは、全部と言わないまでもデータのI/Oにかかわる部分は、ほぼ網羅できると思います

ベテランが丁寧に教えてくれる データベースの知識と実務 (IT ENGINEER’S Basic)

今回は、ソーシャルといっても、ちょっと中身のない、「コンテンツ」で、だれかが何かを書き込んだら、フォローしたり、いいねしたり、コメントしたり・・程度のデータベース構築を1から説明していきます。

勝つDBエンジニアのキャリアパス (DB Magazine SELECTION)

Database は、MariaDB 10.0 以降を対象に記載しておりますので、一部MySQLの環境では動かない部分もあるかもしれません

前後逆になってしまいましたが、このような順で記載していきます

  1. データベースを構築する hit.hateblo.jp
  2. ユーザー情報を作成する hit.hateblo.jp
  3. フォロー/フォロワーを作成する hit.hateblo.jp
  4. いいねを作成する hit.hateblo.jp
  5. 本文を登録する hit.hateblo.jp
  6. コメントを登録する hit.hateblo.jp
  7. ビジネスロジックを内包する hit.hateblo.jp

ここまでできれば、データベース内で、8割の機能は実装できたと思ってよいかと思います!!