gpt4 book ai didi

c# - 对数据库存储的信息实现复杂的算法

转载 作者:搜寻专家 更新时间:2023-10-30 20:45:44 25 4
gpt4 key购买 nike

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

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

我的第一个想法是使用存储过程、函数、 View 和所有其他基本 SQL Server 工具在 SQL 中完成所有事情,但后来我想也许我应该编写托管代码(我精通 C#)在 SQL Server 上执行。

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

对于我应该走的道路的任何建议,我将不胜感激。

谢谢!

最佳答案

Performance is an issue here

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

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

另一方面:

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

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

关于c# - 对数据库存储的信息实现复杂的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3206397/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com