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

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

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

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

SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Firebird

Firebirdは、オープンソースのリレーショナルデータベース管理システムです。オープンソースとしてBorland社が公開したInterBaseから派生したもので、MGAによる高度なトランザクション管理機能を持ちます。

Q&A

解決済

3回答

2302閲覧

アプリ同梱(共有有り)のデータベースにはどれが良いか?

mikihiro

総合スコア16

MySQL

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

SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Firebird

Firebirdは、オープンソースのリレーショナルデータベース管理システムです。オープンソースとしてBorland社が公開したInterBaseから派生したもので、MGAによる高度なトランザクション管理機能を持ちます。

0グッド

3クリップ

投稿2019/01/15 12:20

編集2019/01/15 12:22

自作のWindows デスクトップアプリケーションを配布しています。
Microsoft SQL Server Expressを利用しています。
問題は、Microsoft SQL Server 2017 をダウンロードしてインストールすることが、対象とするユーザー(アプリをスタンドアローンで利用する)にとって難しいということです。SQL Server 2014なら、なおさら難しいです。

  • 運用開始後の、データベースのバックアップの為の設定も一筋縄ではいきません。
  • SQL Serverをインストールする前に、すでにSQL Serverがインストールされているか確認しインストールするかしないかをユーザーに理解してもらうのもなかなか簡単ではありません。(アプリ側で、レジストリを読みこんでSQL Serverのインストール状況を調べられますが、それは別にして)

解決方法として、自作アプリケーションをインストールする際に、データベースも同時にインストールすると良いと考えました。**どの選択肢が良いか、アイディア・メリット・デメリットを教えて頂けると助かります。**他に、選択肢があれば、それも良いです。

  • スタンドアローンで利用するユーザーにとってできるだけ簡単にインストールできて設定できる方法を考えます。
  • Windows 7以降・.Net 4.7以降・Entity Framework のコードファーストで作成しています。(SQL Server Management Studioで、データベースの構造を規定し、それをVisual Studioで、データベースからコードファーストで作成)
  • PC1台のスタンドアローンでの利用がメインですが、サーバーをたててネットワーク上で複数台で共有しての利用も行える必要があります
  • データ量は、1テーブル20万レコードまでを想定しています。

#####配布実例
データベース込みで配布しているソフトを探したところ、次の実例がありました。

  • アプリインストール時に、Firebirdも同時にサイレントインストール。
  • スタンドアローンでは、mdbファイルを利用。共有する時は、SQL Serverを利用。

##選択肢
###■1 SQLite と、SQL Server

  • SQLite 1台のみで利用する場合は、SQLite を使う。アプリ同梱で利用するには、SQLite が良いという話のため。
  • SQL Server は、複数台で利用する場合に使う。

デメリット
2種類のデータベースに対応しなければいけない。けれども、コードファーストで2種類のデータベースにそれほど時間をかけないで対応できるのなら、これでも良い気がします。

###■2 MySQL

サイレントインストールなど、アプリケーションと同時に簡単にインストールできるのか?

###■3 PostgreSQL

サイレントインストールなど、アプリケーションと同時に簡単にインストールできるのか?

###■4 Firebird

アプリケーションと一緒にサイレントインストールするソフトがあるので、おそらく簡単にインストール可能。ただし、上3つに比べ、情報が少ないのがネック。

##■1~4までの共通の懸念
それぞれのDatabaseは、Entity Framework のコードファーストでうまく機能するだろうかという点がよくわかりません。
Entity Framework 用のproviderは次の通りです。

  1. System.Data.SQLite.EF6
  2. MySql.Data.Entity
  3. EntityFramework6.Npgsql
  4. EntityFramework.Firebird

Entity Frameworkの対応状況や情報は、ダウンロード数が多いものがより良く対応しているだろうと思いますから、対応状況は、SQLiteが良いのではないかと考えています。この点も情報が有る方、教えて頂けると助かります。

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

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

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

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

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

guest

回答3

0

自己解決

1週間ほど検証していました。

###Firebird
プログラムが13MB程度でファイルサイズが小さく、アプリ同梱に良いが、DBeaverでのデータベース操作でカラム名の日本語の処理に難があり、EntityFrameworkでの検証までは行わなかった。

###PortgreSQL
installer by EnterpriseDBの場合、プログラムサイズは190MB程があるが、サイレントインストールも可能。アプリに同梱してインストールするのも問題なくできそうだ。installer by BigSQLなら、アプリインストール時に、PortgreSQLをネットからダウンロードしてインストールすることも出来そうだ。また、EntityFrameworkを利用するのには、無償のEntityFramework6.npgsqlもあるが、限界がある。商用のdotConnect for PostgreSQLの方がいろいろと対応している(データベースからedmx作成など)ようだ。

MySQLと、SQLiteは検証しませんでした。
表題の回答として、現時点では、PortgreSQLなら充分であると判断します。

投稿2019/01/23 06:08

mikihiro

総合スコア16

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

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

0

SQL Server、コマンドラインからのサイレントインストール、できるんじゃね?
コマンド プロンプトからの SQL Server のインストール - SQL Server | Microsoft Docs
構築スクリプトをどう作るかまではわかりませんが。

投稿2019/01/15 12:32

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

mikihiro

2019/01/16 13:23

ご回答ありがとうございます。 いろいろと調べたのですが、Mircrosoft SQL Server Express 2017のインストーラーを、アプリに同梱して配布してもいいよ、というのが見つからないので、多分、出来ないのだろうと判断しています。そうなると、Microsoftのサイトからダウンロードしてインストールする、という手順にならざる得ないと考えています。
sazi

2019/01/16 13:32

都度ダウンロードではなく、ダウンロードしたものを同梱しておけば良いと思いますけど。
mikihiro

2019/01/18 07:21

ありがとうございます。それはOKか、Mircrosoftに確認してみようと思います。
guest

0

質問にある選択肢全てを経験してる人がいればいいですけど、それよりも、どれも自分でインストールできるものばかりなので、やってみる方が早道だと思います。

また、awsとかのwebサービスも視野に入れてはどうですか。

投稿2019/01/15 14:10

sazi

総合スコア25138

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

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

mikihiro

2019/01/16 13:24 編集

ご回答ありがとうございます。 ・確かに、全部経験している方はあまりいないと思います。SQLiteはアプリ同梱で配布する前提ですから、おそらく大丈夫だとは思うのですが、 例えば、個別に、MySQLとかの場合はどうなのか(どうするのか)というのが、情報不足なので、分かる方がいらっしゃたらと思います。 How to install MySQL server on client system with my software setup, in C#? https://stackoverflow.com/questions/46364566/how-to-install-mysql-server-on-client-system-with-my-software-setup-in-c?answertab=active#comment79712922_46364684 を読む限り、MySQLをアプリのインストーラーで同時にインストールするのに成功していないのは分かりました。 ・現時点では予定にありませんが、awsなどは将来的に考えてみる予定です。
sazi

2019/01/16 13:38 編集

使用するアプリの前提条件としてSQL Serverだったとして、手順書とか説明書の類があればそんなに大変だとは思えません。 DBのインストールに関連した知識が不足していれば、難しいと感じるのは分かりますけど。
mikihiro

2019/01/18 07:26

コメントありがとうございます。画像を入れる矢印付きなど、説明書を準備しても、対応できない人も多いと分かりました。例えば、SQL Serverという英語が表示されるだけで、拒否反応があるということです。
sazi

2019/01/18 08:21

仮にインストールがOKなように作ったとして、そのようなユーザー先でDB回りのトラブルが発生したら終わりでしょうね。 そのような考えなら、突き詰めると、データベースに頼らず自前でデータを管理する仕組みにするしか無いですね。
mikihiro

2019/01/20 13:25

おっしゃる通り、運用中にトラブルが発生したら、対応は無理でしょう。その場合は、サポートが必要になります。現在、実行ファイルサイズが小さいのが理由で、Firebirdを試している最中です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問