什么是大规模系统的最佳方法 - 数据库过程或编程逻辑
What is the best approach for high scaled system - DB procedure or Programming logic
我真的陷入了迷茫
我们使用某种语言 (java / php /python) 作为前端和数据库之间的中介。我们使用 JPA/hibernate 来平滑这个数据流。如果我们咨询任何 DBA,大部分数据处理、计算、作业处理都可以在过程或触发器的帮助下直接在数据库端完成,并且具有良好的可扩展性。如果在 java / php 端处理同样的事情,则需要更长的时间,并且由于事务处理不是很直接,因此可扩展性可能会再次出现问题。
我想澄清的是:1] 使用 DB 过程处理大多数可能的逻辑真的更好/正确吗(比如处理影响许多表的大量处理)? 2] 可扩展性可以通过 DB 实现而不能通过 Coding 实现吗? 3] 有没有更好的方法来查看这个数据库和编码关系?
提前致谢。
此致
好吧,根据你所说的,你是对的,
但是,并不总是你会有正确的答案,例如,我在一个有6M+记录的系统上工作,你需要分析系统并检查数据库性能,当你启动时,性能会很好,但是随着系统的扩展,你开始拥有越来越多的记录,在这里你会知道你是否可以将触发器和所有内容保留在数据库中,或者你需要对它们进行硬编码,但据我所知,你很高兴在数据库中完成计算,因为它在 3 个系统之间共享。
所以我的建议是,将计算保留在数据库中,除非由于性能或任何因素而必须移动它们。
我真的陷入了迷茫
我们使用某种语言 (java / php /python) 作为前端和数据库之间的中介。我们使用 JPA/hibernate 来平滑这个数据流。如果我们咨询任何 DBA,大部分数据处理、计算、作业处理都可以在过程或触发器的帮助下直接在数据库端完成,并且具有良好的可扩展性。如果在 java / php 端处理同样的事情,则需要更长的时间,并且由于事务处理不是很直接,因此可扩展性可能会再次出现问题。
我想澄清的是:1] 使用 DB 过程处理大多数可能的逻辑真的更好/正确吗(比如处理影响许多表的大量处理)? 2] 可扩展性可以通过 DB 实现而不能通过 Coding 实现吗? 3] 有没有更好的方法来查看这个数据库和编码关系?
提前致谢。
此致
好吧,根据你所说的,你是对的,
但是,并不总是你会有正确的答案,例如,我在一个有6M+记录的系统上工作,你需要分析系统并检查数据库性能,当你启动时,性能会很好,但是随着系统的扩展,你开始拥有越来越多的记录,在这里你会知道你是否可以将触发器和所有内容保留在数据库中,或者你需要对它们进行硬编码,但据我所知,你很高兴在数据库中完成计算,因为它在 3 个系统之间共享。
所以我的建议是,将计算保留在数据库中,除非由于性能或任何因素而必须移动它们。