220 likes | 234 Vues
Explore the evolution of database systems to three-tier computing, discussing history, workflow management, application objects, server technology, and the shift to web services. Delve into the complexity, challenges, and integration possibilities in the modern landscape.
E N D
TPlite is Back! Jim Gray Microsoft Research http://research.microsoft.com/~gray/talks/ High Performance Transaction Processing Workshop, Asilomar, CA., 27 September 2005,
Summary Statement • Database system’s have changed • Is a web service (listens to port 80, does wsdl+soap,…) • Hosts a programming environment(J2EE VM or .NET CLR or… ) • So, Client-Server (a.k.a. tplite) • is possible • Has always been easier than 3-tier.
Outline • History: Everyone Went to 3-tier (and why) • New news (DB + Languages + WS-*): • Extensible DBs have arrived. • Full blown programming environment inside • Fewer technologies: • DB integrated with language. • Web service integrated with class/method. • Fears • DMZ and attack surface.
Fat Thin Fat Thin Work Distribution Spectrum • Presentation and plug-ins • Workflow manages session & invokes objects • Application Objects • Database Presentation workflows App Objects Database
Server green screen 3270 Active Transaction Processing Evolution to 3 Tier Mainframe • Mainframe Batch processing (centralized) • Dumb terminals & Remote Job Entry • Intelligent terminals database backends • Workflow SystemsObject Request BrokersApplication Generators cards TP Monitor ORB
PC Evolution to Three Tier • Stand-alone PC (centralized) • PC + File & print servermessage per I/O • PC + Database server message per SQL statement • PC + App server message per transaction • ActiveX Client, ORB ActiveX server, Xscript IO request reply disk I/O SQL Statement Transaction
Mosaic DHTML AJAX Web Evolution to Three Tier Web Server WAIS • Character-mode clients, smart servers • GUI Browsers - Web file servers • GUI Plugins - Web dispatchers - CGI • Smart clients - Web dispatcher (ORB)pools of app servers (ISAPI, Viper)workflow scripts at client & server archie ghopher green screen
The Pattern: Three Tier Computing • Clients do presentation, gather input • Clients do some workflow (Xscript) • Clients send high-level requests to ORB • ORB dispatches workflows • Server-side workflow scripts orchestrate distributed App objects • State stored in DB Presentation workflow App Objects Database
Why Did Everyone Go To Three-Tier? • Manageability • App rules must be with data • Middleware operations tools • Performance (scalability) • Server resources are precious • ORB dispatches requests to server pools • DBMS was DREADFUL at connections • Connection pools • Technology & Physics • Put UI processing near user • Put shared data processing near shared data Presentation workflow App Objects Database
Multiplexing ORB DB • DB client connection: • Mega-instruction set up • Mega-byte state • TP mon or Web Server or ORB • Lightweight connection setup • Multiplex many clients to few DB connections (connection pool) • Act as ORB (manage & dispatch server pools). • Act as object container.
Complexity: Dark Side of 3-Tier • 3 programming environments • Lots of configuration choices • Lots of interface problems • SQL, PL/SQL, T-SQL, … in DB • It isn’t simple!!
Outline • History: Everyone Went to 3-tier (and why) • New news (DB + Languages + WS-*): • Extensible DBs have arrived. • Full blown programming environment inside • Fewer technologies: • DB integrated with language. • Web service integrated with class/method. • Fears • DMZ and attack surface.
DB Systems Get VMs A Server • DB has language VM execution environment • Language guys are “embracing” DB • Class is a web service:Generate WSDL • VERY simple • programming • debugging • Fewer languages & Tools to learn • See SQLJ or LINQ or… EJB Network Receiver Queue Management Connections Security Context Configuration Thread Pool Service logic Shared Data
The New World – Programs + Data • It finally happened • Languages have sets (lists, dictionaries, …) • Table inherits from iEnumerable • List <employee> E = new Employee(); • for each e in E {} • Rows are objects • Query answers are collections • Supports transactions • Push a button and you have a web service.
Old Data Access in API’s SqlConnection c = new SqlConnection(…); c.Open(); SqlCommand cmd = new SqlCommand( @“SELECT c.Name, c.Phone FROM Customers c WHERE c.City = @p0” ); cmd.Parameters[“@po”] = “London”; DataReader dr = c.Execute(cmd); while (dr.Read()) { string name = r.GetString(0); string phone = r.GetString(1); DateTime date = r.GetDateTime(2); } r.Close(); Queries in quotes Arguments loosely bound Results loosely typed Compiler cannot help catch mistakes
Integrated Data Access Classes describe data public class Customer { public int Id; public string Name; public string Phone; … } Table<Customer> customers = …; foreach(c in customers.Where(City == “London”)) { Console.WriteLine(“Name: {0} Phone: {1}”, c.Name, c.Phone); } Tables are real objects Query is natural part of the language Results are strongly typed
Web Services • Now trivial to publish your data. • Just say: “Make this method a web service.” • Everything else is automatic • Performance is easy to understand • Simplest configuration • Simplest management • Minimal data movement • Fewest round trips.
Foreigners Client DB Other Data Sources us DBs are FederatingSo Now Do Connection Management • DB needs to • talk to peers scaleout • Talk to foreigners data integration • So, it is a client for multiplexing & connection pooling • So, now they get it, (they finally had to write an app) and they are doing it. • So, DB now does multiplexing
Outline • History: Everyone Went to 3-tier (and why) • New news (DB + Languages + WS-*): • Extensible DBs have arrived. • Full blown programming environment inside • Fewer technologies: • DB integrated with language. • Web service integrated with class/method. • Fears • DMZ and attack surface.
Fears • DB has large attack surface • Web servers act as DMZ to Internet. • Premise: • We can lock-down the DBMS interfaces • Only show “public” web services to outside.
Summary Statement • Database system’s have changed • Is a web service (listens to port 80, does wsdl+soap,…) • Hosts a programming environment(J2EE VM or .NET CLR or… ) • So, Client-Server (a.k.a. TPlite) • is possible • Has always been easier than 3-tier. • Integration of DB and Language makes it VERY natural
threads shared memory Distributed ExecutionThreads and Messages • Thread is Execution unit(software analog of cpu+memory) • Threads execute at a node • Threads communicate via • Shared memory (local) • Messages (local and remote) messages