许多具有 3 层架构的 Web 应用程序都在应用程序服务器中完成所有处理,并使用数据库进行持久性只是为了具有数据库独立性。在为数据库支付巨额费用后,在应用程序服务器上进行包括批处理在内的所有处理而不使用数据库的功能似乎是一种浪费。我很难说服人们我们需要两全其美。
最佳答案
您在 3 层架构中没有使用数据库的哪些“功能”?想必我们充分利用了 SQL 以及所有数据管理、分页、缓存、索引、查询优化和锁定功能。
我猜这个论点是我们所谓的“业务逻辑”应该实现的地方。在应用程序服务器或数据库存储过程中。
我认为将其放入应用服务器有两个原因:
1).可扩展性。如果数据库太忙,则添加更多数据库引擎相对困难。跨多个数据库对数据进行分区确实很棘手。因此,请将业务逻辑拉出到应用程序服务器层。现在我们可以有许多应用程序服务器实例都执行业务逻辑。
2).可维护性。原则上,存储过程代码可以编写良好、模块化且可重用。实际上,用 OO 语言(例如 C# 或 Java)编写可维护的代码似乎要容易得多。由于某种原因,存储过程中的重用似乎是通过剪切和粘贴进行的,因此随着时间的推移,业务逻辑变得难以维护。我承认,有了纪律,这种情况就不会发生,但目前纪律似乎很短缺。
我们确实需要小心谨慎,真正充分利用数据库查询功能,例如避免将大量数据拉到应用服务器层。
关于database - 数据库是否应该仅用于持久性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2955098/