Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit
PL/SQL Release 12.1.0.2.0
&
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0
Hello Dear Experts:
I thank you for your service which has helped many starters and inquisitive minds in the Oracle DB Arena. My question as follows, a little elaborate so kindly forgive me:
Many projects still user the 3-tier architecture (UI/MIDDLEWARE/DB). And based on a quote from Sven W (Senior Member in Oracle Community)
"A large part of the business logic, that was traditionally inside some Java middle tier is moving into the database (for Oracle see SmartDB paradigm). A large part of the client-side logic is moving to the Javascript world - especially angular"
Even with this above quote, many Middleware Java architects have always insisted towards the following, and so I sincerely urge for some expert perspective: (Also kindly share any article links if available online)
- It is a standard to keep everything in one place (Middleware-Java), meaning all Webservice calls should be done by MW-Java since Oracle is a Data-Repository ONLY (even after so many DBMS Utilities like ACL, Queuing and programing language like PL/SQL), Why? Because DB should not be loaded, why? Its not scalable, since scaling happens only in WM. And DB is the bottom most layer so, the communication channel should be DOWNWARD for PUSH/PULL. Nothing should originate from DB (UPWARD direction), even if the call is within the network and not crossing firewall.
- It is a standard in the new Cloud world that the communication channel to this bottom most layer (DB) is one way, meaning MW talks to DB and no one else. Even if a Webservices are local (not across firewall) and the application being a Data Centric one. DB should do a PUT/GET, even if it takes “extra handshakes”, MW should take data from DB, send to Webservice, get data back, publish it back DB. Why? It’s not secure for a bottom most layer to do anything other than PUT/GET, since Cloud architecture will not allow an UPWARD call from DB to any webservice or a Java Class.
- Its standard that MW manage the queueing. Say DB receives data from various sources through Different Stored Procedures (Online via MW-JAVA, Flat-File upload, ETL Tool and more), and if each of these PUTs require some additional information through a webservice, who is best to maintain this QUEUE? It’s not standard for DB to queue. These records must be given to MW, who then have to maintain a queue and make the Webservice call and push the updates back to DB.
- Its standard the Flat File parsing tool shouldn‘t call DB, it should call MW-Java which will maintain a Queue of requests if needed and respond back to the Parsing tool, during which time the Parsing ETL tool should keep waiting or keep pinging. Parsing tools (which is local , within network) shouldn't call PL/SQL procedures to publish and let DBMS queue the incoming tasks, eliminating extra handshakes.
- It is a standard in the corporate world to have business logic at middleware (Java) even if that logic is a Data-manipulation logic. especially when Oracle PL/SQL is far advanced and has an intimate proximity with the SQL Engine for all data manipulations, which avoids mass data to be sent over the network for aggregation. PL/SQL is well equipped with Collections, Queuing, Encapsulation, Abstractions and more.
My deep regards,
Thank you. Aj