为什么前端不直接访问数据库

为什么前端不直接访问数据库

前端不直接访问数据库的原因在于:安全性、数据完整性、性能优化、分层架构。其中,安全性是最关键的,因为前端直接访问数据库会暴露数据库的连接信息和接口,容易被恶意用户攻击,导致数据泄露和破坏。通过在后端设置中间层,可以对请求进行验证和过滤,保护数据库免受直接攻击。接下来,我们将详细探讨其他几个原因及其重要性。

一、安全性

安全性在任何应用程序中都是至关重要的。前端直接访问数据库会暴露数据库连接信息,如数据库的URL、用户名和密码,这使得恶意用户可以轻松地获取这些信息并进行攻击。数据库攻击可能包括SQL注入、数据篡改、数据泄露等严重问题。

在后端设置中间层可以显著提高安全性。后端服务器可以通过身份验证和授权机制来确保只有经过认证的用户才能访问数据库。后端还可以通过使用参数化查询和预处理语句来防止SQL注入攻击。此外,后端可以记录和监控所有数据库访问请求,以便在发生异常时及时响应和处理。

二、数据完整性

数据完整性指的是确保数据库中的数据是准确、一致和可靠的。前端直接访问数据库可能导致数据不一致和完整性问题。前端代码通常是由多个开发人员编写的,而且前端代码的执行环境可能是多种多样的。不同的前端请求可能会以不同的方式修改数据库中的数据,导致数据不一致。

通过在后端设置中间层,可以集中管理和控制数据库访问。后端服务器可以确保所有的数据库操作都遵循预定义的业务逻辑和规则,从而保持数据的一致性和完整性。例如,后端可以通过事务管理来确保一组相关的数据库操作要么全部成功,要么全部回滚,从而避免部分成功导致的数据不一致问题。

三、性能优化

性能优化是另一个重要原因。前端直接访问数据库可能会导致性能问题,特别是在高并发的情况下。前端请求通常会发送到数据库服务器,进行数据查询或修改操作。如果有大量的前端请求同时访问数据库,数据库服务器的负载会显著增加,进而影响应用程序的整体性能。

在后端设置中间层可以有效地进行性能优化。后端服务器可以通过缓存机制来减少对数据库的直接访问,从而提高响应速度。后端还可以进行批量处理,将多个前端请求合并成一个数据库操作,减少数据库的负载。此外,后端可以进行查询优化,使用合适的索引和查询计划来提高数据库操作的效率。

四、分层架构

分层架构是一种软件设计模式,它将应用程序划分为不同的层次,每一层都有其特定的职责。前端直接访问数据库违背了分层架构的原则,因为它将数据访问逻辑与表示层混合在一起,这会导致代码难以维护和扩展。

通过在后端设置中间层,可以实现分层架构。后端服务器负责处理数据访问逻辑和业务逻辑,前端负责处理用户界面和用户交互。这种分层设计使得每一层的职责更加明确,代码更加模块化和可维护。例如,当需要修改数据库访问逻辑时,只需要修改后端代码,而不需要修改前端代码。

五、可扩展性

可扩展性是指应用程序在面对增加的负载和需求时,能够有效地扩展和适应。前端直接访问数据库会限制应用程序的可扩展性,因为数据库服务器的资源是有限的,难以应对大量的并发请求。

通过在后端设置中间层,可以实现应用程序的可扩展性。后端服务器可以进行水平扩展,通过增加更多的服务器来分担负载。例如,可以使用负载均衡器来将前端请求分发到多个后端服务器,从而提高应用程序的处理能力。后端还可以使用分布式数据库和数据分片技术来处理大量的数据和高并发请求。

六、日志记录与监控

日志记录与监控对于维护和调试应用程序是非常重要的。前端直接访问数据库会使得难以进行有效的日志记录和监控,因为前端环境是分散的,不同的前端请求可能来自不同的用户和设备。

在后端设置中间层可以集中进行日志记录和监控。后端服务器可以记录所有的数据库访问请求,包括请求的时间、类型、用户和执行结果。这些日志信息对于诊断问题、分析性能瓶颈和进行安全审计都是非常有用的。此外,后端可以使用监控工具来实时监控数据库的运行状态,及时发现和处理异常情况。

七、API设计与数据格式

API设计与数据格式是前后端通信的重要方面。前端直接访问数据库会使得数据格式和接口设计变得混乱和不可控。不同的前端可能会以不同的方式访问和处理数据,导致数据格式不一致和接口难以维护。

通过在后端设置中间层,可以规范化API设计和数据格式。后端服务器可以定义统一的API接口和数据格式,确保前后端通信的一致性和可维护性。例如,可以使用RESTful API或GraphQL来设计标准化的接口,使用JSON或XML来定义数据格式。后端还可以进行数据验证和转换,确保前端接收到的数据是准确和一致的。

八、业务逻辑与规则

业务逻辑与规则是应用程序的核心,前端直接访问数据库会使得业务逻辑和规则分散在不同的前端代码中,难以集中管理和维护。不同的前端开发人员可能会以不同的方式实现业务逻辑,导致代码重复和不一致。

通过在后端设置中间层,可以集中管理和实现业务逻辑与规则。后端服务器可以封装所有的业务逻辑和规则,确保所有的前端请求都遵循相同的逻辑和规则。例如,可以在后端实现用户身份验证、权限控制、数据校验等业务逻辑,前端只需要调用后端提供的API接口。这样可以减少代码重复,提高代码的一致性和可维护性。

九、测试与调试

测试与调试是软件开发过程中的重要环节,前端直接访问数据库会使得测试与调试变得复杂和困难。前端代码的执行环境是多样的,不同的前端设备和浏览器可能会导致不同的结果,难以进行有效的测试与调试。

在后端设置中间层可以简化测试与调试过程。后端服务器可以进行单元测试和集成测试,确保所有的数据库操作和业务逻辑都是正确和可靠的。前端只需要进行接口测试,确保与后端的通信是正常的。例如,可以使用Mock数据来模拟后端接口的响应,进行前端的功能测试。这样可以提高测试的覆盖率和效率,减少调试的难度和成本。

十、版本控制与发布

版本控制与发布是软件开发和运维的重要部分,前端直接访问数据库会使得版本控制和发布变得复杂和不可控。不同的前端代码可能依赖于不同版本的数据库接口和数据格式,导致兼容性问题和发布风险。

通过在后端设置中间层,可以实现版本控制和发布管理。后端服务器可以使用版本控制系统来管理代码的修改和发布,例如Git。后端可以定义API的版本号,确保不同版本的前端代码可以兼容和共存。例如,可以使用URL中的版本号来区分不同的API版本,如/v1/users和/v2/users。后端还可以进行灰度发布和回滚操作,减少发布的风险和影响。

十一、跨平台与多设备支持

跨平台与多设备支持是现代应用程序的一个重要需求,前端直接访问数据库会使得跨平台和多设备支持变得困难和复杂。不同的平台和设备可能需要不同的数据格式和接口,导致代码重复和不一致。

通过在后端设置中间层,可以实现跨平台和多设备支持。后端服务器可以根据不同的平台和设备返回适配的数据格式和接口。例如,可以为Web端、移动端和桌面端提供不同的API接口和数据格式,确保不同平台和设备的用户都能获得最佳的使用体验。后端还可以进行数据转换和格式化,简化前端的开发工作。

十二、数据缓存与同步

数据缓存与同步是提高应用程序性能和用户体验的重要手段,前端直接访问数据库会使得数据缓存和同步变得复杂和难以管理。不同的前端请求可能会导致数据的不一致和缓存失效问题。

在后端设置中间层可以实现数据缓存与同步管理。后端服务器可以使用缓存机制来减少对数据库的直接访问,提高响应速度。例如,可以使用内存缓存(如Redis)或CDN缓存来存储常用的数据,减少数据库的负载。后端还可以实现数据的同步和更新,确保前端获取的数据是最新和一致的。例如,可以使用消息队列或事件驱动机制来实现数据的实时同步和更新。

十三、数据分析与报表

数据分析与报表是应用程序的一个重要功能,前端直接访问数据库会使得数据分析和报表生成变得困难和复杂。前端代码通常不适合进行复杂的数据分析和报表生成操作,可能导致性能问题和数据不一致。

通过在后端设置中间层,可以实现数据分析与报表生成。后端服务器可以进行复杂的数据查询和分析操作,将结果返回给前端。例如,可以使用数据仓库和大数据处理技术来进行数据分析和报表生成,确保数据的准确性和一致性。后端还可以提供灵活的报表接口,允许前端根据需求生成不同类型的报表。

十四、用户体验与交互设计

用户体验与交互设计是前端开发的重点,前端直接访问数据库会使得用户体验和交互设计变得复杂和不可控。前端代码需要处理复杂的数据访问和业务逻辑,可能影响用户体验和交互效果。

通过在后端设置中间层,可以简化前端的开发工作,提升用户体验和交互设计。前端可以专注于用户界面和交互设计,将数据访问和业务逻辑交给后端处理。例如,前端可以通过异步请求和页面局部刷新来提高用户体验,后端负责处理数据的查询和更新操作。这样可以提高前端的开发效率和用户体验。

十五、前后端分工与协作

前后端分工与协作是现代应用开发的一种趋势,前端直接访问数据库会使得前后端的分工与协作变得困难和混乱。前端开发人员需要了解和处理数据库的细节,增加了开发的复杂性和协作的难度。

通过在后端设置中间层,可以实现前后端的分工与协作。前端开发人员可以专注于用户界面和交互设计,后端开发人员可以专注于数据访问和业务逻辑的实现。例如,前端可以通过API接口与后端进行通信,后端提供标准化的API接口和数据格式。这样可以提高开发效率和团队协作效果。

十六、技术栈与工具选择

技术栈与工具选择是开发过程中需要考虑的重要因素,前端直接访问数据库会使得技术栈和工具选择变得受限和复杂。前端代码通常使用JavaScript、HTML和CSS等技术,不适合处理复杂的数据库操作和业务逻辑。

通过在后端设置中间层,可以自由选择合适的技术栈和工具来实现数据访问和业务逻辑。后端开发人员可以使用适合的编程语言和框架,如Java、Python、Node.js等,来实现高效和可靠的数据库操作和业务逻辑。例如,可以使用ORM框架来简化数据库操作,使用微服务架构来实现业务逻辑的模块化和解耦。这样可以提高开发效率和代码质量。

十七、数据备份与恢复

数据备份与恢复是保证数据安全和可靠性的重要措施,前端直接访问数据库会使得数据备份和恢复变得复杂和难以管理。前端代码不适合处理数据备份和恢复操作,可能导致数据丢失和损坏。

在后端设置中间层可以实现数据备份与恢复管理。后端服务器可以定期进行数据备份,确保在数据丢失或损坏时能够及时恢复。例如,可以使用备份工具和策略来定期备份数据库,使用日志和快照来实现数据的增量备份和恢复。后端还可以提供数据恢复接口,允许在数据丢失或损坏时进行快速恢复。

十八、国际化与本地化

国际化与本地化是现代应用程序的一个重要需求,前端直接访问数据库会使得国际化和本地化变得复杂和困难。不同的语言和地区可能需要不同的数据格式和内容,前端代码难以处理这些差异。

通过在后端设置中间层,可以实现国际化与本地化支持。后端服务器可以根据用户的语言和地区返回适配的数据和内容。例如,可以使用国际化和本地化框架来管理不同语言和地区的文本和数据,使用数据库中的多语言字段来存储不同语言的内容。后端还可以进行数据转换和格式化,确保前端显示的数据符合用户的语言和地区习惯。

十九、数据隐私与合规性

数据隐私与合规性是现代应用程序必须考虑的重要问题,前端直接访问数据库会使得数据隐私和合规性难以保证和管理。不同的法律法规和隐私政策对数据的收集、存储和处理有不同的要求,前端代码难以满足这些要求。

在后端设置中间层可以实现数据隐私与合规性管理。后端服务器可以实现数据的加密、脱敏和访问控制,确保数据的隐私和安全。例如,可以使用加密算法来加密敏感数据,使用脱敏技术来隐藏敏感信息,使用权限控制来限制数据的访问。后端还可以进行合规性检查和审计,确保数据的收集、存储和处理符合相关的法律法规和隐私政策。

二十、开发与运维的分离

开发与运维的分离是现代应用程序开发和运维的一种趋势,前端直接访问数据库会使得开发与运维的分离变得困难和复杂。前端开发人员需要处理数据库的运维问题,增加了开发的复杂性和运维的难度。

通过在后端设置中间层,可以实现开发与运维的分离。前端开发人员可以专注于用户界面和交互设计,后端开发人员可以专注于数据访问和业务逻辑的实现,运维人员可以专注于数据库的运维和管理。例如,前端可以通过API接口与后端进行通信,后端提供标准化的API接口和数据格式,运维人员负责数据库的备份、恢复、监控和优化。这样可以提高开发效率和运维效果。

相关问答FAQs:

为什么前端不直接访问数据库?

在现代 web 开发中,前端与数据库之间的交互通常是通过后端服务器来完成的。这种架构设计的原因有很多,下面将详细探讨其中的几个关键因素。

安全性

直接让前端访问数据库会带来严重的安全隐患。数据库通常存储着敏感信息,如用户的个人资料、信用卡信息以及其他保密数据。如果前端代码直接连接数据库,攻击者可以通过逆向工程或代码注入等手段,轻易地获取到数据库的访问权限。这种情况可能导致数据泄露、篡改或删除等严重后果。

后端服务器作为中间层,能够对请求进行验证和授权。只有经过认证的用户才能访问特定的数据。这种设计大大降低了数据库暴露在互联网中的风险。

数据管理与业务逻辑

前端主要负责用户界面的展示与交互,而数据库则负责数据的存储与管理。将两者直接连接会使得前端代码的复杂性大大增加。前端开发者需要了解数据库的结构、查询语言以及事务管理等知识,这与他们的核心任务并不相符。

通过后端服务器,业务逻辑可以集中管理,数据的处理与展示也可以更加灵活。后端可以根据不同的业务需求,处理复杂的数据查询、聚合和转换,然后将处理后的数据返回给前端。这种分层架构不仅使代码更加清晰,还便于后期的维护与扩展。

性能与优化

直接在前端访问数据库,意味着每一次用户操作都需要进行数据库查询。这种方式在网络延迟、数据传输和处理效率上都存在潜在的问题。前端与数据库的直接连接可能导致性能瓶颈,尤其是在高并发访问的情况下,数据库可能会面临过载的风险。

通过后端的中间层,可以实现缓存策略、负载均衡等优化手段,提升系统的整体性能。此外,后端可以对数据库进行优化,使用索引、查询优化等技术,确保数据的快速响应。

数据一致性与事务管理

在多个用户同时对数据库进行操作时,保持数据的一致性和完整性是极其重要的。数据库通常提供事务管理的功能,可以保证一组操作要么全部成功,要么全部失败。这种机制在前端直接访问数据库的情况下难以实现。

后端服务器能够有效地管理数据库的事务,确保数据的安全性与一致性。即便在出现错误或故障时,后端也可以采取措施来恢复数据,避免数据损坏或丢失。

跨域与访问控制

在 web 开发中,跨域问题经常会出现。当前端与数据库在不同的域名或端口上时,浏览器会限制直接的访问。这种限制虽然是为了提高安全性,但也会给开发带来麻烦。

通过后端服务器处理前端与数据库的交互,可以有效解决跨域问题。后端可以根据需要设置 CORS(跨域资源共享)策略,允许特定的前端应用访问数据,从而实现灵活的访问控制。

数据格式与接口设计

不同的前端框架和技术栈对数据的格式和结构有不同的要求。如果前端直接访问数据库,数据格式的转换将变得复杂。后端可以统一处理数据格式,将其转化为前端所需的 JSON 或 XML 格式,简化数据交互。

此外,后端可以设计 RESTful API 或 GraphQL 等接口,使得前端在调用数据时更加直观和简便。这种设计不仅提升了开发效率,也使得前后端的协作更加顺畅。

版本控制与迭代

在软件开发过程中,需求变化是常态。前端与后端的解耦设计使得团队可以独立迭代和版本控制。前端开发者可以在不影响数据库的情况下,快速迭代用户界面和交互方式。

如果前端直接访问数据库,任何变更都可能导致后端数据库结构的调整,增加了开发和维护的复杂性。通过后端,前端和数据库之间的变化可以独立管理,从而提高了开发效率和灵活性。

结论

前端不直接访问数据库的原因是多方面的,涵盖了安全性、性能、数据一致性、访问控制等多个层面。通过引入后端服务器作为中间层,不仅提高了系统的安全性和性能,还简化了开发流程,增强了团队的协作能力。这种架构设计不仅适用于小型应用,也为大型系统的可扩展性和可维护性提供了保障。因此,现代 web 开发中普遍采用前后端分离的架构模式,以应对不断变化的业务需求和技术挑战。

本文内容通过AI工具匹配关键字智能整合而成,仅供参考,帆软不对内容的真实、准确或完整作任何形式的承诺。具体产品功能请以帆软官方帮助文档为准,或联系您的对接销售进行咨询。如有其他问题,您可以通过联系blog@fanruan.com进行反馈,帆软收到您的反馈后将及时答复和处理。

Shiloh
上一篇 2024 年 8 月 12 日
下一篇 2024 年 8 月 12 日

传统式报表开发 VS 自助式数据分析

一站式数据分析平台,大大提升分析效率

数据准备
数据编辑
数据可视化
分享协作
可连接多种数据源,一键接入数据库表或导入Excel
可视化编辑数据,过滤合并计算,完全不需要SQL
内置50+图表和联动钻取特效,可视化呈现数据故事
可多人协同编辑仪表板,复用他人报表,一键分享发布
BI分析看板Demo>

每个人都能上手数据分析,提升业务

通过大数据分析工具FineBI,每个人都能充分了解并利用他们的数据,辅助决策、提升业务。

销售人员
财务人员
人事专员
运营人员
库存管理人员
经营管理人员

销售人员

销售部门人员可通过IT人员制作的业务包轻松完成销售主题的探索分析,轻松掌握企业销售目标、销售活动等数据。在管理和实现企业销售目标的过程中做到数据在手,心中不慌。

FineBI助力高效分析
易用的自助式BI轻松实现业务分析
随时根据异常情况进行战略调整
免费试用FineBI

财务人员

财务分析往往是企业运营中重要的一环,当财务人员通过固定报表发现净利润下降,可立刻拉出各个业务、机构、产品等结构进行分析。实现智能化的财务运营。

FineBI助力高效分析
丰富的函数应用,支撑各类财务数据分析场景
打通不同条线数据源,实现数据共享
免费试用FineBI

人事专员

人事专员通过对人力资源数据进行分析,有助于企业定时开展人才盘点,系统化对组织结构和人才管理进行建设,为人员的选、聘、育、留提供充足的决策依据。

FineBI助力高效分析
告别重复的人事数据分析过程,提高效率
数据权限的灵活分配确保了人事数据隐私
免费试用FineBI

运营人员

运营人员可以通过可视化化大屏的形式直观展示公司业务的关键指标,有助于从全局层面加深对业务的理解与思考,做到让数据驱动运营。

FineBI助力高效分析
高效灵活的分析路径减轻了业务人员的负担
协作共享功能避免了内部业务信息不对称
免费试用FineBI

库存管理人员

库存管理是影响企业盈利能力的重要因素之一,管理不当可能导致大量的库存积压。因此,库存管理人员需要对库存体系做到全盘熟稔于心。

FineBI助力高效分析
为决策提供数据支持,还原库存体系原貌
对重点指标设置预警,及时发现并解决问题
免费试用FineBI

经营管理人员

经营管理人员通过搭建数据分析驾驶舱,打通生产、销售、售后等业务域之间数据壁垒,有利于实现对企业的整体把控与决策分析,以及有助于制定企业后续的战略规划。

FineBI助力高效分析
融合多种数据源,快速构建数据中心
高级计算能力让经营者也能轻松驾驭BI
免费试用FineBI

帆软大数据分析平台的优势

01

一站式大数据平台

从源头打通和整合各种数据资源,实现从数据提取、集成到数据清洗、加工、前端可视化分析与展现。所有操作都可在一个平台完成,每个企业都可拥有自己的数据分析平台。

02

高性能数据引擎

90%的千万级数据量内多表合并秒级响应,可支持10000+用户在线查看,低于1%的更新阻塞率,多节点智能调度,全力支持企业级数据分析。

03

全方位数据安全保护

编辑查看导出敏感数据可根据数据权限设置脱敏,支持cookie增强、文件上传校验等安全防护,以及平台内可配置全局水印、SQL防注防止恶意参数输入。

04

IT与业务的最佳配合

FineBI能让业务不同程度上掌握分析能力,入门级可快速获取数据和完成图表可视化;中级可完成数据处理与多维分析;高级可完成高阶计算与复杂分析,IT大大降低工作量。

使用自助式BI工具,解决企业应用数据难题

数据分析平台,bi数据可视化工具

数据分析,一站解决

数据准备
数据编辑
数据可视化
分享协作

可连接多种数据源,一键接入数据库表或导入Excel

数据分析平台,bi数据可视化工具

可视化编辑数据,过滤合并计算,完全不需要SQL

数据分析平台,bi数据可视化工具

图表和联动钻取特效,可视化呈现数据故事

数据分析平台,bi数据可视化工具

可多人协同编辑仪表板,复用他人报表,一键分享发布

数据分析平台,bi数据可视化工具

每个人都能使用FineBI分析数据,提升业务

销售人员
财务人员
人事专员
运营人员
库存管理人员
经营管理人员

销售人员

销售部门人员可通过IT人员制作的业务包轻松完成销售主题的探索分析,轻松掌握企业销售目标、销售活动等数据。在管理和实现企业销售目标的过程中做到数据在手,心中不慌。

易用的自助式BI轻松实现业务分析

随时根据异常情况进行战略调整

数据分析平台,bi数据可视化工具

财务人员

财务分析往往是企业运营中重要的一环,当财务人员通过固定报表发现净利润下降,可立刻拉出各个业务、机构、产品等结构进行分析。实现智能化的财务运营。

丰富的函数应用,支撑各类财务数据分析场景

打通不同条线数据源,实现数据共享

数据分析平台,bi数据可视化工具

人事专员

人事专员通过对人力资源数据进行分析,有助于企业定时开展人才盘点,系统化对组织结构和人才管理进行建设,为人员的选、聘、育、留提供充足的决策依据。

告别重复的人事数据分析过程,提高效率

数据权限的灵活分配确保了人事数据隐私

数据分析平台,bi数据可视化工具

运营人员

运营人员可以通过可视化化大屏的形式直观展示公司业务的关键指标,有助于从全局层面加深对业务的理解与思考,做到让数据驱动运营。

高效灵活的分析路径减轻了业务人员的负担

协作共享功能避免了内部业务信息不对称

数据分析平台,bi数据可视化工具

库存管理人员

库存管理是影响企业盈利能力的重要因素之一,管理不当可能导致大量的库存积压。因此,库存管理人员需要对库存体系做到全盘熟稔于心。

为决策提供数据支持,还原库存体系原貌

对重点指标设置预警,及时发现并解决问题

数据分析平台,bi数据可视化工具

经营管理人员

经营管理人员通过搭建数据分析驾驶舱,打通生产、销售、售后等业务域之间数据壁垒,有利于实现对企业的整体把控与决策分析,以及有助于制定企业后续的战略规划。

融合多种数据源,快速构建数据中心

高级计算能力让经营者也能轻松驾驭BI

数据分析平台,bi数据可视化工具

商品分析痛点剖析

01

打造一站式数据分析平台

一站式数据处理与分析平台帮助企业汇通各个业务系统,从源头打通和整合各种数据资源,实现从数据提取、集成到数据清洗、加工、前端可视化分析与展现,帮助企业真正从数据中提取价值,提高企业的经营能力。

02

定义IT与业务最佳配合模式

FineBI以其低门槛的特性,赋予业务部门不同级别的能力:入门级,帮助用户快速获取数据和完成图表可视化;中级,帮助用户完成数据处理与多维分析;高级,帮助用户完成高阶计算与复杂分析。

03

深入洞察业务,快速解决

依托BI分析平台,开展基于业务问题的探索式分析,锁定关键影响因素,快速响应,解决业务危机或抓住市场机遇,从而促进业务目标高效率达成。

04

打造一站式数据分析平台

一站式数据处理与分析平台帮助企业汇通各个业务系统,从源头打通和整合各种数据资源,实现从数据提取、集成到数据清洗、加工、前端可视化分析与展现,帮助企业真正从数据中提取价值,提高企业的经营能力。

电话咨询
电话咨询
电话热线: 400-811-8890转1
商务咨询: 点击申请专人服务
技术咨询
技术咨询
在线技术咨询: 立即沟通
紧急服务热线: 400-811-8890转2
微信咨询
微信咨询
扫码添加专属售前顾问免费获取更多行业资料
投诉入口
投诉入口
总裁办24H投诉: 173-127-81526
商务咨询