2

我试图找出在关系数据库中存储信息的复杂算法的最佳实践。

具体来说:我想在包含许多文档的 TFxIDF 向量的大型 MS SQL Server 数据库上实现 k-means 算法(文档聚类算法)的变体(这些向量用作算法的输入)。

我的第一个想法是使用存储过程、函数、视图和所有其他基本 SQL Server 工具在 SQL 中完成所有工作,但后来我想也许我应该编写托管代码(我精通 C#),这些代码将在SQL 服务器。

性能是这里的一个问题,所以我也需要考虑到这一点。

我将不胜感激有关我应该采取的道路的任何建议。

谢谢!

4

1 回答 1

1

性能是这里的一个问题

它总是如此。在查看此类代码时,您必须考虑两种相反的趋势:

  • 由于索引、缓存和其他优化技术,数据库服务器通常最适合快速进行这些计算。你似乎明白这一点。

另一方面:

  • 这些计算很少单独发生。您必须考虑整个服务器的性能,并且您的数据库通常是数据中心中负载最多的服务器。从技术和业务角度来看,它也是最难扩展的。技术,因为您必须平衡几个不同的组件,包括磁盘、RAM 和 cpu,而且要知道瓶颈在哪里并不总是那么容易。此外,这些往往是“大型”机器,您的组织中没有多少人有调整经验。最后,它们通常不能很好地扩展。您不能像添加应用程序服务器那样轻松地添加另一个数据库服务器来分担负载。从商业角度来看,所有这些技术性的庞然大物加起来就是成本。比那更多的,.

将这两点放在一起,性能的最佳方法通常是使用数据库中的查询功能来提取您真正需要的记录子集,并可能进行一些更简单的预处理 - 低挂水果,如果你愿意的话。然后在可能的情况下并行完成应用程序服务器上的繁重工作。

于 2010-07-08T18:10:36.290 回答