開発ではないのですが、迷った末に質問致します。
中小企業向けの商品管理システムの製造でDB設計をやることになりました。
で、DBの選定から行う事になったのですが、
さすがに経験が無いので皆様に質問です。
前提条件
・取扱データ量に関してはまだ見えていません。
・トランザクションは楽観的排他処理でOK。
・予算は安い方が良い(Oracleなどの有料DBも選択可)
・リレーショナルデータベースであること
・使用するプログラムの開発言語はC#.NetとWPF(ClickOnceによる配布)
・サーバはタワー型のWindows Server 2012 R2 を予定(linuxでも可)
・DBを搭載するサーバはDB専用サーバとして構築
当然、ユーザーから見れば予算を抑えたいだろうと思い、
私のDB使用経験のあるものから
・SQL Server Express (データ容量の制限はデータ保持期間に制限を設けるなどで検討)
・MySQL
のいずれかかな、と考えています。
当方、本職は事務方なので、現在のメジャーなDBの種類などにも疎いです。
皆様であればどういうDBを選択なさるのか、
そのDBのどういうメリットを見込んで選択されたのか、
などのご意見を頂けませんでしょうか?
2017/01/30追記
やはり技術的な質問ではないのか、なかなかご意見頂けませんね。
2017/02/01に締め切らせて頂きます。
2017/01/31追記
各DBの特徴と良し悪しの点などをお出しいただいたPanzer_vorさんからの回答をベストアンサーとさせていただきました。
また、私からのコメントで技術情報から脱線する話も多くなり、誠に申し訳ありません。
ただ、そういった中でも得られることは多く、技術サイドの方との話をする際に具体的に意見を求めやすくなる情報も多く頂き、感謝いたします。
皆様、ご回答・ご意見を頂きありがとうございました。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答5件
0
ベストアンサー
- MySQL
- SQL Server
- Oracle
- PostgreSQL
当方が触れたことがある上記4点に軽く触れながら回答してみます。
(※DB2は分かりません・・・^^;)
C#.NET、Windows ServerとWindows製品で固めるのであればMySQLよりSQL Serverを迷わず推したい所ですが、
Express版というのがちょっと引っかかりはします・・・。
一応SQL Serverの採用理由としては以下のような感じ。
0. .NETとの親和性が高い(いろいろ便利機能が使える)
0. 開発・管理用コンソールがVisual Studioとほぼ同様の操作性で利用可
0. ウィンドウ関数、CTEなど割と標準SQLに準拠
ただしExpress版の制限を見てると、
DBを長期的に運用するにあたり、
割と準備されてて欲しい機能が使えなかったり制限がかかっているようです。
なので本当にExpress版でいくならその辺りを慎重に検討すべきかと思います。
MySQLは個性が強いので、
個人的には苦手だったりしますが、
無償のRDBMSとしてはシェア的には抜けてます。
比較的規模が小さいシステムとなるのであれば、
MySQLも選択肢としては良いのかもしれません。
手軽に環境が構築できるのも強みです。
また同じく無償のRDBMSとしてPostgreSQLがありますが、
環境設定周りや大量データの取り扱いには少し手を焼く印象です。
ただしMySQLと比べると、
標準SQLへの準拠率は高くウィンドウ関数、CTEも利用可能です。
更にVer9.5からはUPSERT機能も追加されており、
より使いやすくはなっています。
ただし.NET、Windows Serverとの親和性については扱ったことがないので何とも判断できません。
(書き忘れてましたが、MySQLも同じく親和性の判断はつかないです。)
要件的に予算は安い方が良いとあるので、
Oracleはそもそも厳しいかもしれませんね。
それだったらSQL Serverの方が安価なので、
まだ説得する見込みはあるかもしれません。
長ったらしく書きましたが、
まとめると下記の順に推奨します。
・SQL Server Expressの制約が飲める場合
→ SQL Server Express
・制約が飲めない場合
→ MySQL、PostgreSQLのいずれか
(使い勝手はPostgre、手軽さはMySQLに軍配が上がります。)
・お金は多少かけても良い場合
→ SQL Server製品版
・お金を突き抜ける場合
→ Oracle
こんな所でしょうかね。
投稿2017/01/26 13:57
編集2017/01/26 14:04総合スコア1636
0
システムの運用主体は誰になるのでしょうか?
ユーザに納品したら運用はユーザが主体でしょうか?
その場合kuroriさん、kuroriさんの会社はどのような立場になるのでしょうか?
ユーザサポートを受けるのか、納品して終わりになるのか。
アプリケーションがWindows(.Net)ベースとの事で、Windows+SQL Serverにしてはと言いたいところですが、運用者のOSやDBへの習熟度合いも考慮に入れる必要があるのではないでしょうか。
Windowsの運用しかした事がない人にLinuxベースのサーバを任せても、ひとたびトラブったら手も足も出ないなんてことになりかねません。
その逆も然りで、Windowsだからサーバ運用が簡単ということもありません。
また、kuroriさん(の会社)が納品後も関わるのであれば、プロダクトの購入費用のほかにサポート契約の費用も見込んでおいた方がよいです。(Linux+MySQLであっても)
ユーザで手に負えない技術的トラブルのエスカレーションを受けたとき、迅速に、手厚く対応してもらうには費用を払ってサポートしてもらう他ないと思います。
構成の選定にはその費用も影響すると思いまし、安ければよいというものでもないはずです。
もちろんkuroriさん(の会社)が「このOS、このDBならどんなトラブルでも対応できる」というのであればその限りにあらずで、その場合は自信のあるプロダクトで構築して納入すればよい話です。
ユーザに納品してしまえばそれで終わり、あとは何も対応しないということであれば気にしなくてもいいのかも知れませんが。
質問文に技術的な要件があまりなかったのでその辺は要再確認だと思うのですが、運用する人のことも考慮に入れないとユーザもkuroriさん(の会社)も幸せになれないと思います。
あまり回答になっていなくて済みません。
投稿2017/01/26 14:28
総合スコア1894
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/01/31 06:26 編集
2017/01/31 07:18
2017/01/31 07:38
2017/01/31 08:45
2017/01/31 09:51
2017/01/31 13:11
0
技術的な面は、Panzer_vorさんの回答が参考になると思いますので、別の視点をからの話です。
結局のところ、
性能や運用のしやすさは(ある程度の小中規模であれば)開発者次第なので、
開発者が開発しやすいもの、かつ、運用しやすいものを選ぶのがベターだと考えてます。
(それなりに大規模なものを開発したり、パフォーマンストラブルシュートしたりの経験から個人的な意見です)
この質問のスコープ外な話になるかと思いますが、
個人的な意見だと、
「PaaSのデータベース使えばいいじゃん」と感じています。
クラウドの利用が、お客さんの都合で無理なら仕方ないのですが...食わず嫌いか知らないから無理とかなら、説明してあげればよいかと。
個人的な一例として、値段的にもお手頃なAzureのSQL Databaseを使います。ついでにサーバーはAzureのWeb Appsの組み合わせで。
オンプレでサーバー買ってインフラ構築・運用とか面倒だしハード面のトラブルシュートでオンサイト対応とかほど面倒なことはないので。
クラウド上でPaaSで揃えれば、インフラ面の心配は不要、構築も自動化できるし、アプリの開発・運用にのみ集中でき、デザスタリカバリーも簡単に構築できるのできます。バックアップストラテジーもポチポチするだけでできるので、メリットは山ほどあります。
クラウド推しを書いてしまいましたが、結局そこも技術者次第です。オンプレ同様、クラウドのアーキテクチャーのプラクティスを理解してないとおかしなことになりかねないので。
バタバタ書いてて、全然回答になっていないのですが、
結論として、
最低限のメリットデメリットと開発・運用での制約内に当てはまるかの検討はするとして、
使えない理由さえなければ、開発側が何を使って開発するっていう決意さえあればよいかと、と思っております。
(お客さんへの説明は、根性論ではなく論理的な説明がもちろん必要と思います)
投稿2017/01/31 04:48
総合スコア294
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/01/31 07:55
0
そんな難しく考えずに、MySQL以外の選択肢なんかありえない案件だと思います。
いろいろ細かいことを気にするなら専門の技術者を使うべきところ。
それを事務方が本職の人に片手間にやらせるようなクソ会社なら、DBはシンプルに一番普及していてトラブル時も解決しやすいMySQLを選ぶしかないでのは?
投稿2017/01/31 04:02
総合スコア907
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/01/31 08:36
2017/01/31 08:56
2017/01/31 13:10
2017/01/31 13:53 編集
0
フリーウェアはもとより,書籍だけでなく,インターネットからでも情報入手しやすいDBを選ぶべきだと思います.
ゆえに,今回は,選ぶべきでないDBを提示します.
DB名:4DDAM
現在の名前は,AIDAMといいます.
数年前まで東証のシステムに使われていたDBです.
処理速度の速さに比べて,仕様が複雑で,開発者全員が仕様を把握できていないため,4DDAMを使っている箇所全てを試験する羽目になったほどです.
そのため,東証はその試験費用を出し渋ったため,入館許可の無いまま開発現場に共連れ入館して試験をすることになりました.
わざわざ,情報入手しやすいDBを選べるならば,有料DBを選ぶ必要は無いと思います.
例えば,OracleDBについて質問が発生したとき,直接Oracle社に質問したければ契約すべきかと・・・.
投稿2017/01/31 11:24
総合スコア26
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/01/31 13:32
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/01/26 14:18
2017/01/26 14:24
2017/01/27 08:50