SlideShare une entreprise Scribd logo
1  sur  27
Télécharger pour lire hors ligne
RDBとNoSQLの基礎と
組み合わせてDB構成をちょっと良くする話
@srockstyle
アジェンダ
• RDBのおさらいと使いどころ
• NoSQLのおさらいと使いどころ
• DB組み合わせて最適化な話
RDBのおさらいと使いどころ
RDBって?どこで使うの?
RDB=Relational Database
• MySQL、MariaDB、PostgreSQLとか
• 関係モデルという設計思想の元に開発されるDB。
関係モデル?
二つのテーブルは別々のデータだけど、一つの情報で
凍結して情報抽出できるモデルのこと
About 関係モデル
• Aという情報に対してBという情報を紐付け、追加
された情報がカラムの追加することなく取得可能。
• 別テーブルのユニークなIDと紐づけることで、カラ
ムを増やさなくても別テーブルで関連データをばし
ばし増やせること
関係モデルのメリット
Music データベースに流すクエリ
SELECT bands.name,artists.name FROM bands
INNER JOIN artists ON bands.id=artists.band_id
WHERE bands.name = "Oasis";
新しいデータを追加
Artistsテーブルのidが5番目に、band_idが1のバンドに
紐付いたGem Archerというアーティストをいれます。
Music データベースにさっきと同じクエリ実行
SELECT bands.name,artists.name FROM bands
INNER JOIN artists ON bands.id=artists.band_id
WHERE bands.name = "Oasis";
RDBの使いどころとおさらい
• 関連モデルで使うことが基本である
• もちろん関連以外でも使えるけど、関連性のある
データを持たせる場面で多く使われる。
• テーブルを結合させるクエリを流すことで、カラム
を追加ではなくレコード追加で変更されたデータを
取得できる
NoSQLのおさらいと使いどころ
NoSQLって?どこで使うの?
NoSQL=Not Only SQL
• RDB以外のDBプロダクト全部。
• DB=RDBだった歴史を変えて、DBの使い方を再
び考え直して利用・発展を促進したいっていう考え
方の呼称。
NoSQLのタイプ
キー・バリュー型:Key Value Store
 →キーに対して値をもつ形。
 例:DynamoDB/SimpleDB,Redis,Memcached
ソート済みカラム型
 →ソートキーに対してカラムの集合をもつ形。
 例:Cassandra,HBase
ドキュメント思考
 →XMLやJson等、スキーマレスでデータ構造が柔軟なもの。
 例:MongoDB,CouchDB
注:列指向DBとNoSQLは違うよ
例:Redshift / BigQuery / Cloudera Impala
• 列のデータをひとまとまりにして取り出すときに効率
的であるように設計されたDB群。
• 行指向(通常のRDB)はトランザクションがあったり
する細かいデータの出し入れに向くが、こいつらは大
きなデータを一発で引っ張るのに向く。
• NoSQLのカラム指向データモデルは多くの行のデータ
を大量の引っ張るのに向いてないので間違わないでね。
Key-Value Storeのポイント
• Keyを元に検索のため、問い合わせが非常にシンプル。
• 更新が細かい単位で不可分( atomic)に行われる
• 関連性がないので書き込み箇所が少なく、問い合わせの実行・解釈も早い
以下のテーブルの場合keyで検索すればvalueが返ってくる。
Key-Value Storeにやらせてはいけないこと
Joinをしない
 →複数テーブルをつなげた検索は向いてない
トランザクション処理をかまさない
 → 複数キーの読み書きをatomicに処理不可能なため
整合性がわりと緩めなので厳密すぎる場面は向いてない
 →データの複製とかがすごくゆるいため
Key-Value Storeの使いどころ
高速な性能の活用
 →大量のデータを管理するテーブル等をもたせる
 例:RDBのキャッシュ、キーに応じたデータの保存
大容量データの保存
 →スケーリングが用意なプロダクトなので大量データを保存可能
 例:キーと値の組み合わせでたくさん保存★保存★
Key Value StoreのNoSQLを
RDBぽい使い方をする
最悪の選択なので良い子は真似しないでね★
∼すろっくさんがみてきた最悪のNoSQLの使い方をしている現場∼
http://www.publickey1.jp/blog/10/nosqlrdbpartake.html
と思ってたら5年前に事例書いているひとがいた
この言葉にすべて集約されると思う
http://www.publickey1.jp/blog/10/nosqlrdbpartake.html
例外:ドキュメント指向DB
• XMLやJsonでデータ構造を作ることでRDBぽくも
使えてしまうやつら。
• MongoDB、CouchDB等。
• ドキュメントが闇(ユーザ会でも声あがってた)
NoSQL=Not Only SQL
• NoSQLはRDBをサポートするためのDBプロダクト
• NoSQLで全部、RDBで全部ではなく適材適所
• 「RDBはこれだからだめだ!」「NoSQLは機能足
りないからつかえない!」ではなくて、マルチDB
でなにかをやるようにする。
DB組み合わせ基礎パターン
じゃあ具体的にどうつかうのん
データはRDB、キャッシュにNoSQL
使用例:Webサービス、ソシャゲ
MapReduceをNoSQL、データマートをDBMSで
使用例:ビッグデータ解析
まとめ
• RDBはテーブル同士を関連する形のとき使えるよ
• NoSQLはRDBをサポートする形で使うのが良いよ
• NoSQLをRDBのように扱うと悲劇しかないよ

Contenu connexe

Tendances

[AWSマイスターシリーズ]Amazon Elastic Load Balancing (ELB)
[AWSマイスターシリーズ]Amazon Elastic Load Balancing (ELB)[AWSマイスターシリーズ]Amazon Elastic Load Balancing (ELB)
[AWSマイスターシリーズ]Amazon Elastic Load Balancing (ELB)
Amazon Web Services Japan
 

Tendances (20)

MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法
 
ちょっと理解に自信がないな という皆さまに贈るHadoop/Sparkのキホン (IBM Datapalooza Tokyo 2016講演資料)
ちょっと理解に自信がないなという皆さまに贈るHadoop/Sparkのキホン (IBM Datapalooza Tokyo 2016講演資料)ちょっと理解に自信がないなという皆さまに贈るHadoop/Sparkのキホン (IBM Datapalooza Tokyo 2016講演資料)
ちょっと理解に自信がないな という皆さまに贈るHadoop/Sparkのキホン (IBM Datapalooza Tokyo 2016講演資料)
 
Amazon DynamoDBの紹介と東急ハンズでの活用について
Amazon DynamoDBの紹介と東急ハンズでの活用についてAmazon DynamoDBの紹介と東急ハンズでの活用について
Amazon DynamoDBの紹介と東急ハンズでの活用について
 
分散処理基盤ApacheHadoop入門とHadoopエコシステムの最新技術動向(OSC2015 Kansai発表資料)
分散処理基盤ApacheHadoop入門とHadoopエコシステムの最新技術動向(OSC2015 Kansai発表資料)分散処理基盤ApacheHadoop入門とHadoopエコシステムの最新技術動向(OSC2015 Kansai発表資料)
分散処理基盤ApacheHadoop入門とHadoopエコシステムの最新技術動向(OSC2015 Kansai発表資料)
 
後悔しないもんごもんごの使い方 〜アプリ編〜
後悔しないもんごもんごの使い方 〜アプリ編〜後悔しないもんごもんごの使い方 〜アプリ編〜
後悔しないもんごもんごの使い方 〜アプリ編〜
 
NetflixにおけるPresto/Spark活用事例
NetflixにおけるPresto/Spark活用事例NetflixにおけるPresto/Spark活用事例
NetflixにおけるPresto/Spark活用事例
 
Yahoo! JAPANにおけるApache Cassandraへの取り組み
Yahoo! JAPANにおけるApache Cassandraへの取り組みYahoo! JAPANにおけるApache Cassandraへの取り組み
Yahoo! JAPANにおけるApache Cassandraへの取り組み
 
Amazon Aurora - Auroraの止まらない進化とその中身
Amazon Aurora - Auroraの止まらない進化とその中身Amazon Aurora - Auroraの止まらない進化とその中身
Amazon Aurora - Auroraの止まらない進化とその中身
 
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
 
202110 AWS Black Belt Online Seminar AWS Site-to-Site VPN
202110 AWS Black Belt Online Seminar AWS Site-to-Site VPN202110 AWS Black Belt Online Seminar AWS Site-to-Site VPN
202110 AWS Black Belt Online Seminar AWS Site-to-Site VPN
 
[AWSマイスターシリーズ]Amazon Elastic Load Balancing (ELB)
[AWSマイスターシリーズ]Amazon Elastic Load Balancing (ELB)[AWSマイスターシリーズ]Amazon Elastic Load Balancing (ELB)
[AWSマイスターシリーズ]Amazon Elastic Load Balancing (ELB)
 
Redisの特徴と活用方法について
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法について
 
MongoDB: システム可用性を拡張するインデクス戦略
MongoDB: システム可用性を拡張するインデクス戦略MongoDB: システム可用性を拡張するインデクス戦略
MongoDB: システム可用性を拡張するインデクス戦略
 
初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!
 
[Cloud OnAir] GCP 上でストリーミングデータ処理基盤を構築してみよう! 2018年9月13日 放送
[Cloud OnAir] GCP 上でストリーミングデータ処理基盤を構築してみよう! 2018年9月13日 放送[Cloud OnAir] GCP 上でストリーミングデータ処理基盤を構築してみよう! 2018年9月13日 放送
[Cloud OnAir] GCP 上でストリーミングデータ処理基盤を構築してみよう! 2018年9月13日 放送
 
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
 
Vacuum徹底解説
Vacuum徹底解説Vacuum徹底解説
Vacuum徹底解説
 
HBase スキーマ設計のポイント
HBase スキーマ設計のポイントHBase スキーマ設計のポイント
HBase スキーマ設計のポイント
 
がっつりMongoDB事例紹介
がっつりMongoDB事例紹介がっつりMongoDB事例紹介
がっつりMongoDB事例紹介
 
40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料)
40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料) 40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料)
40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料)
 

En vedette

車載用OSと自動車事情
車載用OSと自動車事情車載用OSと自動車事情
車載用OSと自動車事情
Tomo Watanabe
 
組込みにおけるHTML5
組込みにおけるHTML5組込みにおけるHTML5
組込みにおけるHTML5
Tomo Watanabe
 
超入門データベース基礎の基礎
超入門データベース基礎の基礎超入門データベース基礎の基礎
超入門データベース基礎の基礎
Matsuzawa Fumiaki
 
XMLデータベースについて
XMLデータベースについてXMLデータベースについて
XMLデータベースについて
Koji Kawaguchi
 

En vedette (20)

RDBとNoSQLの上手な付き合い方(勉強会@LIG 2013/11/11)
RDBとNoSQLの上手な付き合い方(勉強会@LIG 2013/11/11)RDBとNoSQLの上手な付き合い方(勉強会@LIG 2013/11/11)
RDBとNoSQLの上手な付き合い方(勉強会@LIG 2013/11/11)
 
【資料】ハンズオンセミナー②プッシュ通知
【資料】ハンズオンセミナー②プッシュ通知【資料】ハンズオンセミナー②プッシュ通知
【資料】ハンズオンセミナー②プッシュ通知
 
LinkedIn勉強会(入門編)
LinkedIn勉強会(入門編)LinkedIn勉強会(入門編)
LinkedIn勉強会(入門編)
 
JavaOne感想&技術トレンド紹介 - JavaOne2015報告会
JavaOne感想&技術トレンド紹介 - JavaOne2015報告会JavaOne感想&技術トレンド紹介 - JavaOne2015報告会
JavaOne感想&技術トレンド紹介 - JavaOne2015報告会
 
20160526 依存関係逆転の原則
20160526 依存関係逆転の原則20160526 依存関係逆転の原則
20160526 依存関係逆転の原則
 
エンタープライズアジャイルと全体最適について ~アーキテクチャ設計とウォーターフォールの必要性~
エンタープライズアジャイルと全体最適について ~アーキテクチャ設計とウォーターフォールの必要性~エンタープライズアジャイルと全体最適について ~アーキテクチャ設計とウォーターフォールの必要性~
エンタープライズアジャイルと全体最適について ~アーキテクチャ設計とウォーターフォールの必要性~
 
車載用OSと自動車事情
車載用OSと自動車事情車載用OSと自動車事情
車載用OSと自動車事情
 
組込みにおけるHTML5
組込みにおけるHTML5組込みにおけるHTML5
組込みにおけるHTML5
 
車載組込ブラウザの過去7年と今を40分でまとめてみる
車載組込ブラウザの過去7年と今を40分でまとめてみる車載組込ブラウザの過去7年と今を40分でまとめてみる
車載組込ブラウザの過去7年と今を40分でまとめてみる
 
超入門データベース基礎の基礎
超入門データベース基礎の基礎超入門データベース基礎の基礎
超入門データベース基礎の基礎
 
プロダクトオーナーにリーダーシップは不要なのか?サーバントリーダーシップで「男の子なチーム」になるのを防ぐ
プロダクトオーナーにリーダーシップは不要なのか?サーバントリーダーシップで「男の子なチーム」になるのを防ぐプロダクトオーナーにリーダーシップは不要なのか?サーバントリーダーシップで「男の子なチーム」になるのを防ぐ
プロダクトオーナーにリーダーシップは不要なのか?サーバントリーダーシップで「男の子なチーム」になるのを防ぐ
 
クラウド時代のエンジニアについて #sesfukui
クラウド時代のエンジニアについて #sesfukuiクラウド時代のエンジニアについて #sesfukui
クラウド時代のエンジニアについて #sesfukui
 
Windows subsystem for linuxで始める組み込みlinux ラズパイ3のブートイメージを作ってみる-
Windows subsystem for linuxで始める組み込みlinux  ラズパイ3のブートイメージを作ってみる-Windows subsystem for linuxで始める組み込みlinux  ラズパイ3のブートイメージを作ってみる-
Windows subsystem for linuxで始める組み込みlinux ラズパイ3のブートイメージを作ってみる-
 
SDカードで無線Lチカ? FlashAirは超ミニマイコン!★Arduino用シールド(基板)配布中
SDカードで無線Lチカ?FlashAirは超ミニマイコン!★Arduino用シールド(基板)配布中SDカードで無線Lチカ?FlashAirは超ミニマイコン!★Arduino用シールド(基板)配布中
SDカードで無線Lチカ? FlashAirは超ミニマイコン!★Arduino用シールド(基板)配布中
 
プロダクトマネージャとしてグローバルプラットフォーム開発に関わって学んだ5つのこと #postudy
プロダクトマネージャとしてグローバルプラットフォーム開発に関わって学んだ5つのこと  #postudyプロダクトマネージャとしてグローバルプラットフォーム開発に関わって学んだ5つのこと  #postudy
プロダクトマネージャとしてグローバルプラットフォーム開発に関わって学んだ5つのこと #postudy
 
「JJUG運営の戦略と戦術」 JJUG CCC 2016 Spring 基調講演
「JJUG運営の戦略と戦術」 JJUG CCC 2016 Spring 基調講演「JJUG運営の戦略と戦術」 JJUG CCC 2016 Spring 基調講演
「JJUG運営の戦略と戦術」 JJUG CCC 2016 Spring 基調講演
 
XMLデータベースについて
XMLデータベースについてXMLデータベースについて
XMLデータベースについて
 
ソーシャルゲーム案件におけるDB分割のPHP実装
ソーシャルゲーム案件におけるDB分割のPHP実装ソーシャルゲーム案件におけるDB分割のPHP実装
ソーシャルゲーム案件におけるDB分割のPHP実装
 
データベース入門3
データベース入門3データベース入門3
データベース入門3
 
データベース入門1
データベース入門1データベース入門1
データベース入門1
 

Similaire à RDBNoSQLの基礎と組み合わせDB構成をちょっとよくする話

これからはNo sqlの時代って本当ですか
これからはNo sqlの時代って本当ですかこれからはNo sqlの時代って本当ですか
これからはNo sqlの時代って本当ですか
yumi_chappy
 
NoSQLに関するまとめ
NoSQLに関するまとめNoSQLに関するまとめ
NoSQLに関するまとめ
Gosuke Miyashita
 
Nosql
NosqlNosql
Nosql
uenno
 

Similaire à RDBNoSQLの基礎と組み合わせDB構成をちょっとよくする話 (20)

About NoSQL
About NoSQLAbout NoSQL
About NoSQL
 
Not only sql _ 新卒エンジニア勉強会20130417
Not only sql _ 新卒エンジニア勉強会20130417Not only sql _ 新卒エンジニア勉強会20130417
Not only sql _ 新卒エンジニア勉強会20130417
 
Dynamodbについて
DynamodbについてDynamodbについて
Dynamodbについて
 
Dynamodbについて
DynamodbについてDynamodbについて
Dynamodbについて
 
初めてのSQL
初めてのSQL初めてのSQL
初めてのSQL
 
Cassandra(no sql)によるシステム提案と開発
Cassandra(no sql)によるシステム提案と開発Cassandra(no sql)によるシステム提案と開発
Cassandra(no sql)によるシステム提案と開発
 
RDBMSより高速なNoSQLを実際に使ってみた話
RDBMSより高速なNoSQLを実際に使ってみた話RDBMSより高速なNoSQLを実際に使ってみた話
RDBMSより高速なNoSQLを実際に使ってみた話
 
RDBってなに?
RDBってなに?RDBってなに?
RDBってなに?
 
これからはNo sqlの時代って本当ですか
これからはNo sqlの時代って本当ですかこれからはNo sqlの時代って本当ですか
これからはNo sqlの時代って本当ですか
 
Rdsを学ぶ
Rdsを学ぶRdsを学ぶ
Rdsを学ぶ
 
Cassandraとh baseの比較して入門するno sql
Cassandraとh baseの比較して入門するno sqlCassandraとh baseの比較して入門するno sql
Cassandraとh baseの比較して入門するno sql
 
NoSQLに関するまとめ
NoSQLに関するまとめNoSQLに関するまとめ
NoSQLに関するまとめ
 
Devsumi2013【15-e-5】NoSQLの野心的な使い方 ~Apache Cassandra編~
Devsumi2013【15-e-5】NoSQLの野心的な使い方 ~Apache Cassandra編~Devsumi2013【15-e-5】NoSQLの野心的な使い方 ~Apache Cassandra編~
Devsumi2013【15-e-5】NoSQLの野心的な使い方 ~Apache Cassandra編~
 
RDBのインデックスについて.pptx
RDBのインデックスについて.pptxRDBのインデックスについて.pptx
RDBのインデックスについて.pptx
 
DBワークロードのAWS化とデータベースサービス関連最新情報
DBワークロードのAWS化とデータベースサービス関連最新情報DBワークロードのAWS化とデータベースサービス関連最新情報
DBワークロードのAWS化とデータベースサービス関連最新情報
 
Mongo db勉強会
Mongo db勉強会Mongo db勉強会
Mongo db勉強会
 
比べてみよう リレーショナル vs ドキュメント.pptx
比べてみよう リレーショナル vs ドキュメント.pptx比べてみよう リレーショナル vs ドキュメント.pptx
比べてみよう リレーショナル vs ドキュメント.pptx
 
RDB技術者のためのNoSQLガイド NoSQLの必要性と位置づけ
RDB技術者のためのNoSQLガイド NoSQLの必要性と位置づけRDB技術者のためのNoSQLガイド NoSQLの必要性と位置づけ
RDB技術者のためのNoSQLガイド NoSQLの必要性と位置づけ
 
Nosql
NosqlNosql
Nosql
 
RDB開発者のためのApache Cassandra データモデリング入門
RDB開発者のためのApache Cassandra データモデリング入門RDB開発者のためのApache Cassandra データモデリング入門
RDB開発者のためのApache Cassandra データモデリング入門
 

Plus de Shohei Kobayashi

クラウドコンピューティングでつくるビッグデータ解析のいまとこれから
クラウドコンピューティングでつくるビッグデータ解析のいまとこれからクラウドコンピューティングでつくるビッグデータ解析のいまとこれから
クラウドコンピューティングでつくるビッグデータ解析のいまとこれから
Shohei Kobayashi
 

Plus de Shohei Kobayashi (9)

これから始めるssl対策
これから始めるssl対策これから始めるssl対策
これから始めるssl対策
 
Works of site reliability engineer
Works of site reliability engineerWorks of site reliability engineer
Works of site reliability engineer
 
クラウドコンピューティングでつくるビッグデータ解析のいまとこれから
クラウドコンピューティングでつくるビッグデータ解析のいまとこれからクラウドコンピューティングでつくるビッグデータ解析のいまとこれから
クラウドコンピューティングでつくるビッグデータ解析のいまとこれから
 
Awsで作るビッグデータ解析今とこれから
Awsで作るビッグデータ解析今とこれからAwsで作るビッグデータ解析今とこれから
Awsで作るビッグデータ解析今とこれから
 
わかると楽しいInfrastructure as code
わかると楽しいInfrastructure as codeわかると楽しいInfrastructure as code
わかると楽しいInfrastructure as code
 
インフラ・サーバ技術の Days of Future Past
インフラ・サーバ技術の Days of Future Pastインフラ・サーバ技術の Days of Future Past
インフラ・サーバ技術の Days of Future Past
 
Awsとrubyで作るビッグデータ解析の裏側
Awsとrubyで作るビッグデータ解析の裏側Awsとrubyで作るビッグデータ解析の裏側
Awsとrubyで作るビッグデータ解析の裏側
 
はじめてのDNS
はじめてのDNSはじめてのDNS
はじめてのDNS
 
Ruby on vim yokohama.vim発表資料
Ruby on vim yokohama.vim発表資料Ruby on vim yokohama.vim発表資料
Ruby on vim yokohama.vim発表資料
 

RDBNoSQLの基礎と組み合わせDB構成をちょっとよくする話