Visual Basic 中学校 掲示板 投稿内容
タグのない投稿を抽出 統計 RSS

Visual Basic 中学校 > 投稿一覧 >

mdb系に代わる、ファイル単体で扱えるデータベース 解決済み

タグの編集...

投稿者 黒猫   (社会人)   投稿日時 2020/12/15 09:56:36
このサイトのデータベース講座を読み、Accessのmdbを使用したツールを作成し、かなり年月が経ちました。
実は、最近、データ追加時に、
「データベース '' を開くことができません。アプリケーションで認識できないデータベースであるか、またはファイルが破損しています。」
というエラーが出ました。
調べてみると、mdbファイルのサイズが2GBになるとこのエラーが出るとのことで、確かに該当mdbのサイズは2GB程度になっていました。
mdbの最適化を行い、ファイルサイズは少し小さくなりましたが、今後のことを考えると、mdb以外のデータベースを使いたいと思いました。
ただ、mdbの良い点は、データベースがファイル単位であるため、ファイルの移動等が可能である点です。
それを踏まえ、おすすめのデータベースはないでしょうか?
要望としては、
・mdbのようにデータをファイルとして扱うことが可能(移動等が可能)
・データ件数・サイズ等の制限がない
・LAN内の共有ストレージ等に配置することにより複数ユーザで共有が可能
 (同時アクセス可が望ましいが、排他処理が必要であればツール内で用意します。)
・商用使用可能な無償のもの、またはリーズナブルなもの
・DB使用に必要なものがツール使用PCに簡単にインストールできるもの

アドバイスよろしくお願いします。


投稿者 るきお   (社会人)   投稿日時 2020/12/15 20:55:27
ご質問の回答を書くのはすごく難しいです。挑戦してみます。

難しい理由は 黒猫さんが、何人でどういう業務にその仕組みを使っているか がわからないという点。それから、どういう要件があるのかわからないという点です。
おそらく黒猫さんが書いていない重要な要件があるはずです。データベースだけあっても意味がないので、それを利用する仕組みがありますよね。現在使っているプログラムやフォームやレポートやクエリなどとの互換性が必要だったり、あるいは全部作り変えてもいいけど、結果的あれができないと困るなどの譲れない線があると思います。

Accessをまるっと置き換えられる何かがあればよいのですが、そのようなものはありません。
(黒猫さんが挙げられている5つの要望に合致するものも私は知りません。)

しかし、これだとゼロ回答になってしまうので、少し提案を書きます。

業務内容がわからないので、なんとも言えませんが、ITの世界でもパラダイムシフトが起こっており、「データベースが要件に合わなくなってきたので、別のデータベースに乗り換えたい。」という視点ではなく、データベースの周辺(クエリやフォーム、レポートなど)も含めて、何かその業務に使えるモダンな仕組みがないか探してみるのが良いのではないかという提案です。


2020年現在、何らかのITの仕組みを考えるのであれば、まずはクラウドを考えることになります。

たとえば、今やっている業務をAzureのや GCP の BigQuery + データポータル で置き換えられる可能性がありませんか?

Azure のデータ分析ソリューション
https://azure.microsoft.com/ja-jp/solutions/big-data/

データポータル
https://marketingplatform.google.com/intl/ja/about/data-studio/


MicrosoftのPowerAppsやGoogleのAppSheetはまた別の視点でデータベースアプリを作成することができます。ExcelとAccessの中間の存在のような感覚で画面やレポートを作成できます。料金はどちらも安いとはいえないかもしれません。

PowerApps
https://powerapps.microsoft.com/ja-jp/

AppSheet
https://www.appsheet.com/


どうしても自前で素のデータベースを読み書きしたいのであれば、3大クラウド(AmazonのAWS、MicrosoftのAzure、GoogleのGCP)の中で私が最もお手軽なデータベースとして使えると思うのはGCPのCloud SQL(MySQL)です。
ファイル形式ではありませんし、アクセスするためにプログラムが必要な点はSQLiteと同様ですが、Cloud SQL Proxyというものをインストールして使用すると、これだけでローカルから簡単にアクセスできるようになるのが他のクラウドのデータベースにはない特徴です。

上記でも触れたGCPのデータポータルを使ってレポートのような形式で見ることもできます。
Cloud SQL(MySQL)は小規模なものなら月額2000円以下で使用できます。小規模と言っても10GBは格納できます。

mdbのようにデータをファイルとして扱いたい理由が私にはわかりません。バックアップなどが気軽にできるということであれば、クラウドベースのソリューションの多くは気軽にバックアップできるので同等です。
なにか、ファイルに特別なこだわりがあるのであれば、SQLiteというデータベースはファイル形式で利用できますが、ほとんどの業務では使用するメリットを感じないため私はこれをお勧めしません。このデータベースを使用するにはSQLiteを読み書きできる別アプリが必要です。SQL文を実行できれば良いレベルならば、Visual Studioやそのほかのもっとお手軽なフリーのツールも利用できます。
SQLiteを使ってフォームやレポートを実現しようとするとプログラムが必要です。そのプログラムはAccessではできません。(もしかしたらできるかもしれませんが聞いたことはありません。)

投稿者 るきお   (社会人)   投稿日時 2020/12/15 21:32:12
そういえば、BigQueryのテーブルをAccessのリンクテーブルにするということもできるのでした。
やったことはなく、どこまで互換性があるのかもわかりませんが参考までに。
https://www.cdata.com/jp/kb/tech/bigquery-odbc-access-linked-tables.rst

投稿者 LINK   (社会人)   投稿日時 2020/12/16 17:55:43
LINKと申します。

るきおさんのおっしゃる通りすべての要件を満たすことは難しいそうですが、
ファイル単体で扱える、無償、PCへのインストールが簡単ということであれば
「SQLite」あたりはどうでしょうか?
URL:https://www.sqlite.org/index.html
ライセンス等については上記HPにありますが
>誰でもオリジナルのSQLiteコードをコピー、修正、公開、使用、コンパイル、販売、配布することができ、ソースコードの形であれ、コンパイルされたバイナリであれ、商業的、非商業的を問わず、どのような目的であれ、どのような手段であっても、自由に使用することができます。
と、なっています。(条項をきちんと読んでから、ご使用ください)

欠点としては、項目の型が少ないことが挙げられます。

参考まで

投稿者 黒猫   (社会人)   投稿日時 2020/12/18 20:30:42
ご連絡が遅くなり申し訳ございません。
確かにクラウドは魅力的ですが、実はある程度の機密事項を扱っている部門での使用のため、そのような情報をクラウド上に置くことが許可されないのです。
このため、 LINKさまご提案の「SQLite」も試してみようと思います。

ただ、mdbでもSQLiteでも、よく考えると、データが重くなると、LAN上に置くと、インデックスを使用できないような検索ではパフォーマンスが著しく悪くなりそうですね。
やっぱり、LAN内にSQL ServerやOracleなどのDBを用意するのがよさそうですね。

お付き合い有難う御座いました。


投稿者 るきお   (社会人)   投稿日時 2020/12/18 20:59:37
>機密事項を扱っている部門での使用のため、そのような情報をクラウド上に置くことが許可されない
組織のポリシーだと個人ではどうしようもないこともあるとは思いますが、一般的にはクラウドの方がセキュリティは高いので、機密情報だからという理由でクラウドに置かないのはアンチパターンです。

GoogleやMicrosoftのような巨大IT企業が力を入れている専用のデータセンター(=クラウド)と、一般企業のサーバーとどちらがセキュリティが高いかといえば、ほとんどの場合、クラウドの方になります。

ただ、確かにレアケースはあって、インターネットにつながっていないネットワークで、建物も含めて厳重な運用を行うようなこともあるようですね。