 In the previous modules, we talked about how the client communicates with the database, how it invokes an action, how it invokes or it initiates something to access the database which is placed somewhere on the internet. Now in this module and in the next module, we will go into some details about how actually things are happening, what CGI is doing, what is happening at the server, what technologies, what tools, what is involved in it, other than just invoking, so that is spread across two modules. So let me first tell you briefly about what I will cover in this module. So I will briefly talk about the APIs, application programming interface, libraries, native database APIs which are related to certain specific databases. And of course, database independent APIs also, which can work across the databases using something called as ODBC, okay, I will explain this, and what are the benefits and shortcomings of APIs. So let's go into more detail, database APIs are a core and foundation, and they are used way, why and how to connect and work with databases, to do what, to send queries and get results, and they have been around, and they have been around in the client server architecture for a while, okay, of course that's not a 3D architecture we have been discussing, and it has a wider usage, why, because it is beneficial, with this people can access the databases and make the results available to the clients. And how it is done using the CGI using the fast CGI libraries, and these libraries are used in application packages, these libraries are used in building tools, these are used in packages, etc. And all of this is transparent to the end user, or the developer, basically, the developer because we are talking about things which are happening at the server side, which are the programmers. So what are the native database APIs native database are API dependent oracle has independent APIs also, which work with non oracle products also, that's the power of the approach. What is the benefit of native APIs, they are fast because of the architecture, right, and others are slow, why they are slow because of the ease of use, because of the customization, it adds a level of programming on top of the actual native database APIs, so I can use a tool, okay, which is kind of neutral to the to the underlying database, but because of the programming layer, okay, the response is not good. They are not inherently dependent because with using the CGI, okay, and native API can work with other server types also. What is the benefit CGI is language independent is a protocol. So using this combination, I can work around things, I can make things happen also database independent APIs, okay, database they are supported by developed by Microsoft, ODBC, and it is supported by many popular databases oracle also, SQL server also, of course others there also, but what it requires it requires ODBC client, you need to install the ODBC client or your client, okay, and then the client doesn't have to know that the underlying database is access or SQL server or its oracle, but the disadvantage is obvious on how many clients you can install this, right or not. So you need one option is using a JDBC and ODBC bridge, the benefit of this bridge that you have the bridge on one client for two way translation, but again the issue is that you have to do it on the client side to the three tiered approach for client or server else need on every client, you understand what I'm trying to say over there. If you have the three tiered approach, then you don't have to install these independent APIs on the client side, you install them at the server end, because client and installation is not feasible. What are the shortcomings and what are the benefits of these APIs, they are flexible and they're efficient, obviously, they provide fast data access, why because they are native to it, right or not, and they have been around even before the web was there. Why because this the traditional client server architecture was there, and these APIs were used to access the databases, okay, for that architecture. But for rapid application development, you need high level tools, okay, and it doesn't support access to native SQL database calls. So there's a trade off over here. And as a web based database designer and developer, you should be aware of these shortcomings and the strengths to make the right choice.