2011-01-24 10 views
0

OKですので、私は一般的にはデータベースを少し新しくしています。私はそれらの背後にある基本的な理論を理解しており、奇妙なアクセスDBをこことそこそこに打ちました。CSVファイルのクエリ/一般的なデータベースに関する質問

私が学ぶのに苦労していることの1つは、 SQLクエリがデータベースにアクセスします。

LANサーバーにデータベースがあるシナリオがあるとします(それは、議論のためのMS Accessです)。いくつかのSQLクエリをクライアントマシンから実行します。クライアントマシンは、クエリの結果が単なる1行であっても、クエリを実行するためにデータベース全体をダウンロードする必要がありますか?それとも、それは何とかそれがol 'CAT5を降りたいデータだけを取得することができますか?サーバーは何かを実行する必要がありますか?サーバーが仕事の一部をしなくても、クライアントがどのようにクエリの結果を得ることができるのかをよく理解できません...

グーグルでは、この問題に関して2つの相反する話があります。

これは次の質問(これは既に回答されている可能性があります)に従います。サーバーに他のソフトウェアが実行されていない状態でDBを照会できる場合は、 CSV?そうでない場合は、どうしてですか?

理由私は、何らかの種類のdbまたはCSVファイルと話す必要のあるモバイルデバイス用のアプリを開発しています。かなり高いレート(バーコードスキャン)でレコードを更新するのでネットワークを停止させたくない(それはそのまま[適切な侮辱を挿入]の遅いバッグです)。デバイスからサーバーへのデータ移動量が少ないほど良いでしょう。

ありがとうございます。

答えて

1

さまざまなSQLサーバーは、サーバーです。これは、クライアントのクエリをリッスンし、応答を返すプログラムです。それは単なるデータ以上のものです。

CSVファイル、または「フラットファイル」は単なるデータです。それ自身でクエリに応答する方法はありません。

ネットワークに接続すると、クエリがサーバーに送信され、適切な結果が検索されます。フラットファイルを開くと、ネットワークやファイルシステムを使用してファイル全体を読み書きしています。

を編集して、特定の用途に関するメモを追加してください。クエリはネットワークトラフィックの量が最も少なくなるため、おそらくデータベースエンジンを使用することになります。あなたがバーコードをスキャンする場合たとえば、あなたのクエリは、次のテキストのような単純なことがあります

INSERT INTO barcode_table ('code', 'scan_date', 'user') VALUES ('1234567890', '2011-01-24 12:00:00', '1'); 

上記の文字列は、データベースエンジンによって処理され、(何らかの関連する支援データと一緒に)コードが格納されています。アプリケーションでファイルを開いたり、データを追加したり、ファイルを閉じたりする必要はありません。ファイルが大きくなると後者は非常に遅くなり、多くのユーザーがアクセスすると同時性が問題になります。

アプリケーションがユーザーに何らかのデータを表示する必要がある場合、アプリケーションは同じ方法で特定の情報を要求し、サーバーは関連する結果を生成します。だから、ユーザーがいくつかのフィルタと一致する製品のリストを望むというシナリオを想像してみてください。お使いの製品が本だった場合は、ユーザーが特定の著者によってリストを要求したとします。この例では

SELECT products.title, barcode_table.code 
FROM products, barcode_table 
WHERE products.author = 'Anders Hejlsberg' 
ORDER BY products.title ASC; 

、のみ製品のタイトルとそのバーコードは、サーバからモバイルアプリケーションに送信されます。

これらの例は、フラットファイルを使用するのではなく、ある種の構造データベースエンジンを使用する場合に役立ちます。しかし、データベースの具体的な風味や実装は、別の問題です。

+0

私はSQLの使い方を知っていますが、とにかく投稿してくれてありがとうございました。 –

0

一般に、リレーショナルデータベースはリモートサーバーに格納され、クライアントインターフェイス経由でアクセスします。各データベースベンダーには、サーバー上のデータベースにアクセスできるリモートコンピューターにインストールするソフトウェアがあります。クエリの実行時にDB全体がクライアントに返されることはありませんが、クエリの構造を慎重に考えない場合は非常に大きな結果セットを送信できます。一般的に、このように流れがある話す:クライアントは

  • クライアントを接続するためのデータベース・サーバがリッスン
    • が接続し、データベース
    • にSQL コマンドを発行したデータベースは、アウト 図にクエリプランを作成します結果の入手方法
    • 計画が実行され、結果が に返されます。

    CSVは単なるファイル形式であり、リレーショナルデータベースのように完全に機能するプラットフォームではありません。

  • +0

    ええ、これは私がその事件だと思っていたようです。したがって、サーバー上の.mdbファイル(アクセス)の場合(サーバーは何も実行していません。文字通りファイルをホストしています)、このシナリオではクライアントはファイル全体をダウンロードしますか?ありがとう –

    +0

    私は答えがノーだと思います。 Accessファイルはページ単位で構成されているため、テーブル(またはフォーム)の定義を読み取ったり、インデックスの一部またはデータの一部を取得したりするには、MDBファイルの一部にランダムアクセスする必要があります。 – pascal

    +0

    ああ。私はこれが適切なデータベース以外のものでは達成できないと思いますか?私が本当に疑問に思うのは、私がCSVにアクセスできるかどうかということです。 –

    関連する問題