現在、趣味レベルでツール開発を行っています。
※職業はIT系ではありません
VisualStudioのC#にて、システムを作っており
今現在はシステム/入力情報はすべてテキスト形式でファイル出力し、
テキストファイルを読み込む形式ですべて動作しています。
ファイル自体が大きくなったこともあり、
データベースというものを使ってみようと思ったのですが、
どのようなものが良いのでしょうか?
有償、無償。 組み込んだツールの配布が可能か否か。
もし可能でしたら、貴方が使った所感等も含めて解説していただけませんでしょうか?
ちなみにOracleやSQLサーバなど有名レベルは名前だけ知っているレベルで、
実際に使ったことはほとんどありません。
※実際にオラクルの無料版だけ数年前インストールし、テーブルというもの等をSQL文にて
1回作ったことがある程度のレベルです。その時にSQL分の書籍だけは何冊か読んだことはあります。
実際組み込もうと思ったのですが、当時の私には技術力+調べ方が足らずツールに組み込めませんでした。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答8件
0
スタンドアロン(ファイルベース)のDBMSで良ければSQLiteが定番です。無料で使えますし、ライブラリ形式ですのでサービスやドライバー等のインストールが不要というお手軽さもあります。SQLiteを利用して作ったアプリの配布も可能です。
元々はC/C++向けですが、.NET Framework向けのパッケージもSystem.Data.SQLite
という名前で提供されています。私自身はC#では使ったことがないのですが、試しに「NuGet パッケージ マネージャー」で「sqlite」と検索してみたらすぐに見つかりました。ですのでプロジェクトへの組み込みも簡単です。お試しで使ってみるのも良いと思います。
追記
DBを使うアプリを作る際は、DBに接続してテーブルの内容を確認したりSQLを実行したりするGUIツールを使うと作業がはかどります。もちろんSQLiteのデータベースファイルを読み書きできるフリーのGUIツールもあります。
投稿2016/01/17 07:59
編集2016/01/17 08:34総合スコア5944
0
ボリューム感がわからないのでなんともですが、私の遍歴を書いておきます
インストールしなくても使えるレベル
スタンドアローン環境が前提です
多分作り方しだいだと思うのですがMDBファイルは壊れやすいとまことしやかに語られています
個人的には10年近く、10万レコード程度のものを使ってもらってますが一度も壊れた事がありません
- MDBファイル
結構定番な気がします
ADO.NETのOleDbCommand経由等でアクセス
OfficeのPro以上 or Access単体を持っているとハードルが非常に低いです
クエリもAccessでささっと作れるので
使うのを辞めた理由:EntityFrameworkでサポートされていない
- SQLite
各地で人気なようですね
さくっと使えなくて使うのをやめました
EntityFramework6までで、使えないことはないけれども嵌りどころが多くて、非推奨ながらもSQLCE(SQL Server Compact)に行きました
EntityFramework7からフルサポートみたいな話も見たので、今後が楽しみなところです
- SQLCE(SQL Server Compact)
SQLServerのサブセット版です
といいながら結構違うので嵌りがちです
SQL Server Compact と SQL Server の相違点
EntityFrameworkにも対応しているので、書き捨てのものでは便利に使っています
ただ今後バージョンアップされない事が正式発表されています(使用は非推奨とのMSの発表も出てた気が)
使うのなら
SQL Server Compact/SQLite Toolbox
が役にたちます
あとSQL ServerにはLocalDBもあり、今後はこちらが使用推奨のようです
特に開発の時にはSQL Serverを用意しておかなくても使える
本番運用はどうでしょう
まだ実績がありません
サービスをインストールする必要あり
マルチユーザー環境で使うならサービスをインストールした方がいいです(パフォーマンス的にも対障害性的にも)
深くは語りませんがEULAに適合する環境もいりますし(配布先に理解してもらうのが...)
- SQL Server
開発で使うにはなんだかんだで良くできています(特にVisualStudioとの連携)
Express版は無償で使えていいのですが、構築したシステムでお金を取るなら最初からStandard版以上にしておいた方がいいです
Express版からStandard版へのアップグレードも相当面倒くさいことになることがあるので
- その他(MySQL、Oracle、...)
バージョンアップの端境期にADO.NET データプロバイダのクオリティが揺れるので、過去に泣いたことがあるので個人的には基本避けています
これから
要件的な(一番はコスト的なものですが)問題が許せば、これからはDBはクラウド側に置くようになるのかなと
AzureのSQLDBは相当よいです(MSのベンダロックイン上等なら)
ただ時間のかかるクエリは終了する前に切られてしまうことがあるので、それを知らないと???ってなることが(そもそもそんな時間のかかるクエリをクラウド側に投げるのが間違い?)
別途webサービスの開発も要りますが、DBのお守りをほぼしなくて良くなるのは何事にも代えがたい
投稿2016/01/17 20:02
総合スコア3939
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
現在、趣味レベルでツール開発を行っています。
※職業はIT系ではありません
VisualStudioのC#
なのですから、Windowsで、Win Form Project であれば、
MS-SQL Server 2012 / 2014 などが、妥当で穏当なところ。
Visual Studio 20xx communityやProfessional以上 を使っているのであれば、
MS-SQL Server 20xx express は導入済みかもしれません。
⇒導入済みの場合は、Management Studio/Managemnt Studio express が入っているかどうか確認して、
未導入の場合は、導入する。
MS-SQL Server を個人で使用したり、DBのメンテナンスをしたくない場合は、
データベースの復旧モデル:単純 とする。
差分、完全とした場合は、定期的なトランザクションログのバックアップが、
最低限必要な定期JOBとなります。
DBの破損チェック、インデックスの再構成、再作成は手動でも可能です。
MS-SQL Server 20xx express にはメンテナンスプランの自動実行機能 が付いていないので
手動実行をするか、タスクスケジューラから定期実行する事になります。
Web系の場合で、ASP.NETの場合は、やはり、MS-SQL Server系
Apache を使うのであれば、ミドルウェア次第です。
Oracle / MySQL / PostgreSQL などは、MS-SQL で雰囲気を掴んでからでも
遅くはありません。
番外:sa / password無は、MS-SQL 2005では癖があるので、設定に苦労します。
投稿2016/01/17 07:49
編集2016/01/17 08:01総合スコア2030
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
とりあえず手間なく試すならAccessかなと思います。
テーブル作成、インデックス作成、クエリー作成などがGUIでささっと作れます。
初期データやテストデータ登録も楽です。
うん千万件とかのレコードになると無理があるかなと思いますが、バックアップもただのファイルコピーだし。
でも、DBサーバーではないのである程度の規模になるなら、回答者の皆さんが推奨しているような製品がよいと思います。
私はpostgreSQLやDB2を使いますが、推奨しません笑
Accessって有料ですよね。とりあえず試すができるのかがよくわかりません。
Aceessはクライアントアプリケーションです。
他のPCで動かすには、それぞれAceessをインストールする必要があります。
スタンドアローン&ローカルアクセスならそれなりに高速だと思いますよ。
Access runtimeというものがあるみたいですね。開発はできないけど実行はできるみたいです。
https://www.microsoft.com/ja-jp/download/details.aspx?id=50040
投稿2019/07/17 01:50
編集2019/07/17 02:54総合スコア40
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
個人で学習する場合、SQLiteの様な軽量なものが良いかと思います。
私は勉強の為に作成しているAndroidアプリにはSQLiteを内蔵しました。
ただ、今後はネットワーク越しのDBアクセスにトライしてみたいという事なら、SQL Server ExpressやMySQL等のRDBをお勧めします。
RDBに関しては本稿と似たような質問をしたことが有りますのでご参考までに。
https://teratail.com/questions/24874
投稿2017/03/08 08:25
総合スコア111
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
趣味レベルであればDB操作を行ってみて、できそうならトライしてみるのがいいかと思います。私もいくつか試してみましたが、どれも一長一短あり、現在はMySQLを.Net用のconnectorで楽しんでいます。
投稿2017/03/08 07:00
退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
私はInterBase(Borland)を使っていた事もありFirebirdを継続して使っています。
Firebird wiki
(現在は隠居の身なので個人的に触れる程度ですがw)
C#は分かってないのでインタフェース部分がどうなるのか分かりませんが(.NET Data Providerがあるのでそれを使うのか?)、C++,javaとは相性がいいようです。
javaでjdbcを使えば読み出しだけなら(カラム数+)数行で書けます。
・・
組込み系が多いので、工場での資材管理などに使いましたが1日1万件程度の資材追加/削除/照合では特に問題はありませんでした。(言語はC++)
投稿2016/01/17 07:05
総合スコア6851
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
趣味でやっているのであれば、Oracle Express Edition に再挑戦されては?
Oracle 以外もふくめて検討されるなら、DB選択のヒント 辺りが役に立ちそうです。
投稿2016/01/17 06:53
総合スコア16417
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。