虽然我还没有阅读算法的所有细节,但我倾向于在代码中进行实际的算法实现,原因有几个。首先,您可以利用经过充分测试的这些算法(或至少部分实现)的现有实现。如您所述,将此逻辑添加到数据库可能很复杂且难以测试。此外,如果您更改存储引擎或格式,代码可能与数据库紧密耦合,使其难以重用。
如果您在java中执行算法,则必须从数据库中读取数据,这可能会导致内存中的大量数据。您需要确保这不会成为限制因素 - 您是否需要一次读取所有数据(这意味着在某些时候RAM将成为限制),或者您可以将数据块化并并行化运作?如果你可以并行化部分算法,用Java(或你选择的任何语言)编写代码将使分割数据变得更容易(如果问题符合该框架,你甚至可以考虑使用Map / Reduce框架 - 再次在这里我没看过算法细节)。
通常,我会尝试将业务逻辑保留在数据库之外。