2011-01-24 23 views
0

好的,所以我对数据库一般来说还不熟悉。我理解他们背后的基本理论,并在这里和那里打破了奇怪的Access数据库。查询CSV文件/一般数据库问题

我一直在努力学习的一件事是,一个SQL查询访问一个数据库。

所以说你有一个局域网服务器上有一个数据库的场景(假设它是MS Access的参数)。您从客户机上运行一些SQL查询或其他SQL查询。客户端机器是否必须下载整个数据库才能运行所述查询(即使查询的结果只是一行)?或者它是否设法得到它想要降级的CAT 5数据?服务器必须运行任何东西来做到这一点?不能完全理解客户如何才能得到查询结果,而无需服务器做一些工作...

我在这个事情上看到两个冲突的故事,当谷歌搜索的东西。

因此,接下来的问题(可能已经得到解答):如果您可以查询数据库而无需获取所有该死的东西,并且没有运行任何其他软件的服务器,也可以使用一个CSV?如果不是,为什么不呢?

我想问的原因是我正在为需要与某种数据库或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,但无论如何感谢帖子,它让我的脑海变得更加坚实。 – 2011-01-24 23:17:21

0

一般来说,关系数据库存储在远程服务器上,并且可以通过客户端界面访问它们。每个数据库供应商都安装有在远程计算机上安装的软件,这些软件将允许您访问服务器上的数据库。当执行查询时,整个数据库不会发送回客户端,但如果您不小心如何构建查询,它可以发送非常大的结果集。一般来说流是这样的:

  • 数据库服务器监听客户端连接
  • 客户端连接并发出SQL 命令
  • 数据库建立一个查询计划 搞清楚数据库如何获得结果
  • 计划已执行且结果 已发送回客户端。

CSV只是一种文件格式,而不是像关系数据库这样的功能齐全的平台。

+0

是的,这似乎是我认为的案件。所以在服务器上的.mdb文件(Access)的情况下(服务器没有运行任何东西,只是简单地托管文件),那么客户端下载整个文件?谢谢 – 2011-01-24 22:46:05