【发布时间】:2013-08-20 06:24:43
【问题描述】:
我工作的公司正在运行一个 C# 项目,该项目从大约 100 个网站爬取数据,将其保存到数据库并对该数据运行一些程序和计算。
这 100 个网站中的每一个都有大约 10,000 个事件,每个事件都保存到数据库中。
之后,保存的数据将被生成并聚合到 1 个大 xml 文件中,因此保存的这 10,000 个事件中的每一个现在都以 XML 文件的形式呈现在数据库中。
这个设计看起来像这样:
1) crawling 100 websites to collects the data and save it the DB.
2) collect the data that was saved to the DB and generate XML files for each event
3) XML files are saved to the DB
这篇文章的主要问题是选择保存的 XML 文件。
每个 XML 大约 1MB,考虑到大约有 10,000 个事件,我不确定 SQL Server 2008 R2 是否是正确的选择。
我尝试使用 Redis,保存效果非常好(而且速度很快!),但是获取这些 XML 的查询运行速度很慢(即使是在本地,所以网络流量不会成为问题)。
我想知道你的想法是什么?请考虑到它是一个实时系统,所以这里不能选择缓存。
欢迎任何想法。
谢谢。
【问题讨论】:
-
如果将事件数据保存在事件表中并在数据存储时生成事件的XML文件,而不是将大型XML文件存储在数据库中,会不会节省资源?询问?这也将允许您为事件生成多种类型的格式,例如 HTML、JSON 等。它还允许您在任何时候需要对事件运行查询 - 例如未来 2 天内发生的事件等。
-
那些 XML 每分钟被查询数百次,因此在运行时生成它们需要很长时间,几乎是不可能的。我更喜欢生成一次,将它们保存在数据库中,然后为我们所有的客户提供这些 XML。问题是,也许 SQL Server 2k8 R2 不是正确的选择。
-
那么这些固定的 XML 文件和客户端查询会根据某种标准生成一个或多个吗?
-
@IdoLazar 我想你误解了我的意思。如果您每秒在数据库中查询 XML 数据数百次,则返回原始数据比返回大量 XML 数据要快得多。生成一次 XML 并缓存或 memcache 文件。做一个测试,对它进行基准测试。我可能是错的。或者,您可以尝试使用不同的数据格式,例如 JSON,它比 XML 更“笨重”。它可能会稍微提高性能。如果可能的话,我个人会重新计划和重新设计系统。当然,这在很多情况下是不可能的。
-
我也同意 James...@ldoLazar.. 试一试,看看我希望这些 XML 是否每分钟被查询数百次更好地缓存在服务器应用程序中!!跨度>
标签: c# sql-server database-design architecture bigdata