質問: 開発ではないのですが、迷った末に質問致します。 中小企業向けの商品管理システムの製造で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さんからの回答をベストアンサーとさせていただきました。 また、私からのコメントで技術情報から脱線する話も多くなり、誠に申し訳ありません。 ただ、そういった中でも得られることは多く、技術サイドの方との話をする際に具体的に意見を求めやすくなる情報も多く頂き、感謝いたします。 皆様、ご回答・ご意見を頂きありがとうございました。
回答: * MySQL * SQL Server * Oracle * PostgreSQL 当方が触れたことがある上記4点に軽く触れながら回答してみます。 (※DB2は分かりません・・・^^;) C#.NET、Windows Serverと**Windows製品で固める**のであればMySQLよりSQL Serverを迷わず推したい所ですが、 Express版というのがちょっと引っかかりはします・・・。 一応SQL Serverの採用理由としては以下のような感じ。 1. .NETとの親和性が高い(いろいろ便利機能が使える) 2. 開発・管理用コンソールがVisual Studioとほぼ同様の操作性で利用可 3. ウィンドウ関数、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 こんな所でしょうかね。