質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
BaaS

BaaSとはバックエンド機能を提供するクラウドサービスの一形態です。BaaSを使うことで開発者はバックエンドの開発をする必要が無くなり、フロントエンドやクライアントアプリなどの開発に注力すことができ、開発のスピードを加速させることができます。

mBaaS

mBaaSとはモバイルアプリケーションでの利用に特化したBaaSです。スマートフォン向けのWebアプリケーションが必要とするサーバ側の様々な機能をインターネットを通じてサービスとして提供しています。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

NoSQL

NoSQL(not only SQL)は、リレーショナルデータベース管理システムとは異なるデータベースシステムを指す言葉です。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Q&A

解決済

1回答

363閲覧

データベースの選択について

退会済みユーザー

退会済みユーザー

総合スコア0

BaaS

BaaSとはバックエンド機能を提供するクラウドサービスの一形態です。BaaSを使うことで開発者はバックエンドの開発をする必要が無くなり、フロントエンドやクライアントアプリなどの開発に注力すことができ、開発のスピードを加速させることができます。

mBaaS

mBaaSとはモバイルアプリケーションでの利用に特化したBaaSです。スマートフォン向けのWebアプリケーションが必要とするサーバ側の様々な機能をインターネットを通じてサービスとして提供しています。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

NoSQL

NoSQL(not only SQL)は、リレーショナルデータベース管理システムとは異なるデータベースシステムを指す言葉です。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

0グッド

2クリップ

投稿2017/08/23 02:02

編集2017/08/23 03:45

いつもお世話になっております。

この度、データベースを使用した開発を行ってみようと考えております。

データベースにも(BaaS、mBaas含め)様々な種類がございますが、
どれを使用すべきかで迷っております。


求められる条件は以下の通りです。

  1. データの更新・削除が容易である
  2. 大量のデータを扱うことに向いている
  3. 複数人が同時にデータを更新しても問題ない(マルチ処理が可能)
  4. カラム数が変動するので、それに対応できる
  5. 高速である

初めは NoSQL の何かにしようかと考えていたのですが、
「データの更新・削除が容易」を満たさないのではないか?ということで考え直そうと思います。

そもそも1〜5が共存することも難しい様な気もしますが...。
皆様のご経験お待ちしております。


(12:30追記)

aro10様
mts10806様

ご確認ありがとうございます。
確認不足のため記述が足りておりませんでした。失礼いたしました。

利用を検討しているアプリケーションのプログラミング言語

使い慣れている PHP を考えております。
ですが、よりよいものがあるのであれば言語含め一新もありかと考えております。

Webアプリなのかクライアントアプリなのかスマートデバイスなのか

Webアプリになります。

・以下も加筆するとより内容がまとまると思います

1. データの更新・削除が容易である

運用の難しい分散システムも検討できます。
ただ、時間に制約があるため導入がしやすいと嬉しいです。

予算に関しましては、「少ない」となります...。
比較的安価なものだと嬉しいです。

2. 大量のデータを扱うことに向いている

短期間に大量のデータが増減します。
また、蓄積された大量のデータをバッチ処理も行う予定があります。

大量の基準は現状言い切れないのですが、全体で100万は超えると思われます。
最初は超えないです。徐々に増えるものになります。

3. 複数人が同時にデータを更新しても問題ない(マルチ処理が可能)

ユーザごとにアカウントを発行し、更新できるものになります。
TwitterなどSNSのように何人もが同時に書き込み(更新)できるようなイメージです。

4. カラム数が変動するので、それに対応できる

ユーザごとに設定できるイメージになります。

例:

  • Aさんは「ID」「名前」「好きな食べ物」カラムを利用
  • Bさんは「ID」「血液型」「名前」カラムを利用

そのため、実稼働時に変動します。
システム停止は行えません。


当然1〜5が共存するものは無いと思います...。
どれかを切り捨てるならば...といったご意見もお待ちしております。

よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

aro10

2017/08/23 02:09 編集

利用を検討しているアプリケーションのプログラム言語(NodeやPHP等)も記載すると相性などもあるのでより的確な回答が得られるかと思います
m.ts10806

2017/08/23 02:11

Webアプリなのかクライアントアプリなのかスマートデバイスなのかでも違ってきますので、どのようなアプリを作ろうとしているかも追記いただけると助かります。
aro10

2017/08/23 02:29 編集

・以下も加筆するとより内容がまとまると思います データの更新・削除が容易である >運用の比較的難しい分散システムを検討することもできるのか、クラウドを利用するとすれば予算上限はどのくらいか ・大量のデータを扱うことに向いている >短期間に大量のデータが増減するのか、蓄積された大量のデータをバッチ処理するのかまた大量の基準(100万件程度などかそれとも何億件、それ以上) ・カラム数が変動 >メンテナンス期間を設けてシステム停止はどの程度許容されるか、それとも実稼働時にカラム数は柔軟に変動するのか
退会済みユーザー

退会済みユーザー

2017/08/23 04:27

大量のデータって、何万行とか目安はあるのでしょうか。また、同時アクセスしそうな想定するユーザー数は何人くらいでしょうか。あと、ER図を起こしたりデータ構造の設計についてはどのくらい経験がお有りでしょうか。
退会済みユーザー

退会済みユーザー

2017/08/25 00:25

m6s様 ご確認ありがとうございます。データ数は増え続けるものとなりますので、具体的な数値は言えませんが最低100万レコードほどは想定しております。ユーザ数も同様ですが、瞬間であれば1000や(多くて)10000程はありえると思われます。ER図・データ図に関しましては「経験があります!」と言えるほどは経験がないと考えております。
guest

回答1

0

ベストアンサー

PHPでのWebアプリ開発ということで、普段はWebフレームワークはLaravelを使っていますが、何度も取得する処理はキャッシュを利用して、非同期で行えるものはキューに回し、API部分はLumenというAPI向けにまとめられた物を切り出して利用したりと切り分けるとPHPでもそこそこの規模でも許容できる費用で十分使えます。
それでも間に合わない場合はPHPならPhalconフレームワークやGo言語に切り替えるといった事が考えられます。

予算が限られているとは、試験的な段階のサービスだと思うので、PHPとMySQLかPHPとMongoDBを使って開発すると良いかもしれません。
「カラム数が変動するので、それに対応できる:にはMongoDBはJson構造で保存するので柔軟な形式のデータ保存が可能です。
将来を考えるとMySQLでも5.7以降であればJSON形式でデータを保存できるので、予算が少ない試験的な段階ではVPS等で数千円で運用してその後AWSのAmazon Aurora等に移行という方法も考えられます。
MongoDBもマネージド・サービスはMongoDB mLab等があるので将来的な移行も検討できます。
性能としては全体で100万件程度(日に日に徐々に増えるものとして)のデータであれば目的に特化したデータベース以外はどのデータベースを使っても大丈夫かと思いますので基本的には使い慣れたデータベースで良いかと思います。

  1. データの更新・削除が容易である > 有名なデータベースであればクライアントライブラリなどは大方整っている。またCLIのツールやGUI管理ツールも存在する
  2. 大量のデータを扱うことに向いている > MySQL等のRDBSでもMongoDBでもきちんとインデックスやサーバースペック、SSDを整えれば可能
  3. 複数人が同時にデータを更新しても問題ない > 基本的に複数アクセスを想定してデータベースは作られているので、トランザクション処理が必要ならばRDBS、必要でない部分はNoSQLも検討
  4. カラム数が変動するので、それに対応できる > MySQLならばJSON型を利用、あるいはMongoDBを利用

あとは、mBaas等の検討については、FirebaseやMobile backend等がありますが、機能が特化している分開発途中で要件的に詰まる事もあるので時間に制約があるとの事で、検討を考える場合は詳しい人に相談すると良いかと思います。
クラウドの利用は、AWSやMicrosoft Azure、GCP等でDB用のサービスがありますが、これもそれぞれで使い方や費用計算が違うので、検討を考える場合は時間制約の中では開発者で触った事があるものか詳しい人に相談すると良いかと思います。

投稿2017/08/23 04:17

編集2017/08/23 04:24
aro10

総合スコア4106

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/08/25 04:18

aro10 様 詳しいご回答ありがとうございます。 やはりPHPフレームワークを利用する方が良いようですね。 またデータベースにつきましても、MySQLもしくはMongoDBを検討してみようかと思います。 ちなみになのですが、これらを混ぜて使うというパターンはありえるのでしょうか? mBaasについてもご回答いただき、ありがとうございます。 この分野についてあまり触れたことがないので、 Parse、Firebaseくらいしか知らず何も分からない状況です。 こちらももう少し調査してみようと思います。
aro10

2017/08/25 05:12

MySQLとMongoDBを混ぜて使うパターンもそれぞれの得意分野を活かす形でよくあります。 MongoDBはNoSQLなので短期間の入出力や動的なスキーマとして子データが違うような非定型なデータを格納する際に楽です。 ただデータベースを増やすと管理や知識、周辺ツール選定がそれぞれいるので、MySQLに慣れているのであれば非構造データ部分はJSON型で対応するとひとまず利用には耐えうるかと思います。 ちなみに有名であったmBaasのParseはサービスとしては無くなってしまいましたが、mBaasはあまり収益性の高くない分野のようなので無くなるリスクとして一考が必要かと思います。
退会済みユーザー

退会済みユーザー

2017/08/25 10:55

aro10様 何から何までありがとうございます。 > MySQLとMongoDBを混ぜて使うパターンもそれぞれの得意分野を活かす形でよくあります。 ありといえばありなのですね...。 MySQLしか触ったことがないので、今すぐは難しそうだなと感じました。 もしよろしければ、組み合わせて使うパターンを例として挙げていただくことは可能でしょうか。 すこし考えてみたのですが、どうも組み合わせた状態が思いつかず...。 > mBaasはあまり収益性の高くない分野のようなので無くなるリスク そうなのですね...。 確かに、Parseのように終了してしまえば開発したサービスも共倒れとなってしまいますよね。 mBaasについてはリスクも検討していきたいと思います。ありがとうございます。
退会済みユーザー

退会済みユーザー

2017/08/29 01:57

aro10 様 お忙しい中、詳しいご回答ありがとうございました。 諸々勉強になりました。
aro10

2017/08/29 02:02

すみません、コメント返信できていると思ってできていませんでした。 組み合わせのパターンとしては、RDBSでは負荷が高いものや運用した場合にサーバーコストがかかる部分(Webのログ収集等)をMongoDB等のNoSQLにすると言ったことが考えられますが、管理が複雑になると本末転倒なのでMongoDBに精通したエンジニアの協力を受けられる前提にしたほうが良いかと思います。
退会済みユーザー

退会済みユーザー

2017/08/29 12:50

aro10 様 わざわざすみません! 内容について承知いたしました。 慎重に進めたいと思います。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問