好的,所以我对数据库一般都是新手。我理解它们背后的基本理论,并在这里和那里打破了奇怪的Access DB。
我正在努力学习的一件事是,例如SQL查询访问数据库。
所以说你有一个场景,在LAN服务器上有一个数据库(让我们说它是MS Access的参数)。您从客户端计算机上运行一些SQL查询或其他SQL查询。客户端计算机是否必须下载整个数据库才能运行所述查询(即使查询结果只是一行)?或者它以某种方式设法获得它想要下来的'CAT5'数据?服务器是否必须运行任何操作?无法理解客户端如何在没有服务器必须完成某些工作的情况下获得查询结果......
在谷歌搜索时,我看到两个相互矛盾的故事。
所以接下来的问题(可能已经回答):如果你可以查询数据库而不必得到整个该死的东西,并且没有服务器运行任何其他软件,可以用同样的方法来完成CSV?如果没有,为什么不呢?
我问的原因是我正在开发一个移动设备的应用程序,需要与某种数据库或CSV文件进行通信,并且它将以相当高的速率更新记录(条形码扫描),所以不要不希望网络陷入停顿(这是一个缓慢的[插入相关的侮辱])。从设备到服务器的数据越少越好。
提前致谢
答案 0 :(得分: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;
在此示例中,只有那些产品标题及其条形码从服务器发送到移动应用程序。
希望这些示例有助于说明使用某种结构数据库引擎,而不是使用平面文件。然而,数据库的具体风格和实现本身就是另一个问题。
答案 1 :(得分:0)
一般来说,关系数据库存储在远程服务器上,您可以通过客户端界面访问它们。每个数据库供应商都有您安装在远程计算机上的软件,允许您访问服务器上的数据库。执行查询时,不会将整个数据库发送回客户端,但如果您不小心如何构建查询,则可以发送非常大的结果集。一般来说,流程是这样的:
CSV只是一种文件格式,而不是像关系数据库那样的全功能平台。