7

単純なフラット ファイル データベースの例と、データ レイヤーを介してそれらにアクセスする方法を見てみたいと思います。以前にフラット ファイルの書き込みと読み取りを行ったことがありますが、テキスト ファイルを使用してアプリケーションのデータにアクセスするデータ レイヤーを作成したことはありません。

可能であれば、シンプルなカスタム フラット ファイル データベースを利用したデータ レイヤーを含むチュートリアルを参照してください。カスタム・ビジネス・オブジェクトを XML で保存してからアップロードする例は、XML が非常に一般的で扱いやすいため、優れています。

また、フラット ファイル データベースの設計に関するベスト プラクティスについて説明している Web サイトへのリンクなどもあれば幸いです。

私の目標は、単純なデータをユーザーのマシンに保存するためのソリューションを用意し、保存されている場所からデータを取得するために特別なソフトウェア (SQL Server など) をインストールする必要がないようにすることです。

これは非常に一般的な質問であることは承知していますが、正しい方向に導くことができるアドバイスは大歓迎です。

4

8 に答える 8

4

今日の周りには多数の同様のテクノロジーがあるため、定義が少し混乱していて理解できないかもしれません。

XML はフラット ファイル形式(またはフラット ファイル データベース) ではありませんが、目標を読むと、実際のフラット ファイルではなく、自己完結型のリレーショナル データベースが本当に必要なように思えます。

他の人たちと同様に、この目的には SQLite を強くお勧めします。さまざまなプラットフォーム用のバインディングがあり、.NET にはSystem.Data.SQLiteがあり、1 つのファイルにデータベース プロバイダーとエンジンの両方があります。

SQLite を使用する 2 つの大きな利点は、実際のデータベースがアプリケーションによって制御される単一のファイルに完全に自己完結していることと、標準の SQL DDL および DML コマンド (つまり、SELECT、INSERT、UPDATE、DELETE、CREATE DATABASE/TABLE など) をサポートしていることです。 )。

単一ユーザー アプリケーションの場合、SQLite はアプリケーション データと設定の両方を保存する優れた (最良の方法の 1 つ) 方法です。最近では、小規模なマルチユーザー アプリケーションもサポートできるという 議論がありました。

ただし、Oracle、MySQL、SQL Server などは、データベース サーバーにアクセス/利用できる場合は、マルチユーザー アプリケーション (小規模なアプリケーションであっても) に適しています。

また、データベースの選択は相互に排他的ではないことを忘れないでください。

多くのユーザーのコンピューターにリッチ クライアント UI がインストールされたマルチユーザー アプリケーションを使用している場合があります。ここでの中央データベースは、実際には MySQL などのマルチユーザー データベースである必要があります。しかし、リッチ クライアント UI 内では、SQLIte は各ユーザーの設定を保存したり、データベースにアクセスできない場合にオフライン サポートを提供したりするのに理想的です。

于 2010-01-09T00:42:24.993 に答える
0

既存のデータベース エンジンを使用する方がよいという多くのコメントに同意します。ただし、実際に質問に答える試みとして:

  • 非常に一般的なフラット ファイル データベース形式は Xbase (通常は .dbf 拡張子を持つファイル) です。「xbase」と「dbf」をグーグルで検索すると、多くの情報と任意の数のドライバーを見つけることができます。本当に興味があれば、かなりのヒントやヒントを抽出できるはずです。
  • システムにある可能性が非常に高いもので遊びたい場合は、ODBC「Microsoft Text Driver」を使用できます。お使いのマシンに Microsoft のデータ アクセス機能があれば、そのドライバーを持っている可能性があります。よくわかりませんが、MDAC と一緒にインストールされている可能性があります。そのドライバーは、カンマ区切りのテキスト ファイルを (他の形式の中でも) 読み書きします。
于 2010-01-09T00:14:28.753 に答える
0

CSVINIXMLなどのテキスト形式を使用して構造化データを保存できますが、IMO をデータベースとして使用するには柔軟性も効率もありません。

優れた代替手段としてSQLiteをお勧めします。これは、非常に強力で軽量なスタンドアロン データベース エンジンです。

于 2010-01-08T23:42:26.327 に答える
0

ケーキを持って食べることもできます:

SQLiteは、単一のファイルで構成され、インストールを必要としない SQL データベースです。多くの言語のバインディングがあり、さまざまなプラットフォームで実行されます。

フラットファイルの上に独自のデータレイヤーを作成することを言及した場合、必要はありません。実際、学習演習が必要でない限り、私はそれをしないことをお勧めします.

于 2010-01-08T23:43:45.793 に答える
0

ユーザーがまったく心配する必要のない組み込みデータベースがいくつかあります。

SQLLite は一般的で、人気があり、クロスプラットフォームなどです。実装言語によって異なります。Java を使用している場合は、Derby など、いくつかあります。.NET は私の得意分野ではありませんが、そこには何かがあると思います。少なくとも、MS には自由に使用できるデスクトップ、組み込み可能な SQL エンジンがあります。

独自のデータベースを作成することは興味深い作業になる可能性がありますが、その車輪はすでに完成しており、ゼロから始めるよりも既存のデータベースを使用する方が簡単で効率的です。ユーザーはこれによってまったく影響を受けないため、それが主な要因である場合、利用可能な製品/プロジェクトを使用しない理由はありません。

于 2010-01-08T23:44:00.520 に答える
0

Perl にはDBD::CSVモジュールがあり、csv ファイルをロードして SQL ステートメントでクエリを実行できます。しかし、あなたの目標のためには、サーバーなしで実行される適切なリレーショナル データベースであるSQLiteを調査する方がよいと思います。

于 2010-01-08T23:44:00.660 に答える
0

Rather than reinvent databases, why not bundle your application with a simple database engine? Databases comes in many sizes, not all are huge :-)

If you do want to reinvent the wheel, looking at the source code of simple open source database engines should point you in the right direction.

于 2010-01-08T23:45:05.027 に答える