Flex搜索界面:加载XML或查询数据库

时间:2010-12-30 18:23:37

标签: flex flash actionscript cairngorm

对于用于搜索和显示结果的Flex应用程序(无写操作),我目前正在关系数据库中存储数据, 但不是通过应用程序查询数据库,而是每晚将数据(包括其关系)写入XML文件。

然后,通过Flex,我正在加载该XML文件,将其解析为自定义对象,并在必要时“查询”这些对象。

它的效果非常好 - 基本上是根据搜索条件过滤这些对象的ArrayCollection。

比如查询数据库,例如,全文搜索在这种情况下非常快。

但是有哪些潜在的缺点?这种方法有效吗?任何想法都将不胜感激。

提前致谢。

1 个答案:

答案 0 :(得分:1)

简短的回答是:...抱歉,没有简短的答案。

答案很长:架构决策总是涉及某种权衡。您的应用程序的正确决定取决于您的内容和系统的整体设计。

我唯一可以肯定的是:你现在所做的事情会阻止问题的清晰分离。

例如:如果您在服务器上进行了搜索,您可能会在数据库中更改字段名称等,而无需客户端知道,因为您可以调整实际数据输出以匹配“旧”模型,即使查询完全不同。客户端将负责显示数据,服务器将负责持久化和检索它。这是您可能想要的,如果您在更大的团队中开发,或者您的应用程序长时间运行,通常具有复杂的事务和/或更改行为,例如在企业方案中。这些场景通常考虑到服务器上的更大压力,因此需要更强大的硬件,因为硬件成本并不是大公司最紧迫的问题。

根据完整数据集的大小,它还会显着降低网络负载,因为您不需要将所有数据集都转移到客户端,而只需将相关结果转移到客户端。因此,如果您的服务器的网络连接有限,或者您的用户往往连接速度较慢,那么这可能是一个好主意。

另一方面:如果你在客户端应用程序中搜索和查询,就像你描述它一样,你需要加载数据库和Web服务器,这并不总是坏事,特别是如果你的服务器容量有限而且表现至关重要。

但是除了增加整体网络流量外,它还意味着您更多地依赖客户端计算机:a)它必须足够快以处理搜索,并且b)您总是必须(重新)部署每次数据模型稍有变化时,都会向用户提供更新的应用程序。这很可能是错误的主要来源,因此您必须实施某种版本检查以防止过时的客户端连接到服务器和/或禁用浏览器缓存。

因此,最后,您必须权衡利弊,然后确定哪种解决方案最适合您的需求。您可能需要考虑使用Lucene之类的专用搜索引擎作为第三种选择。