|
PART II
|
Chapter 4: QUI, UI --
Chapter 5: The Server -- Client/Server
Chapter 6: The Local-Area Network --
Chapter 7: Wide-Area Networks --
Chapter 8: The Mainframe -- Chapter 9: Database -- The Concept 223 Chapter 10:
Database -- |
69
223
|
Seven big chapters: this is by far the most ambitious part of the book. Should you read it? For both technical and nontechnical readers the answer is an absolute yes. For the same reasons and for different reasons. The common reason is that gain- ing an understanding of the technology and the reasons for that technology will pro- vide the means for truly participating in the coming revolution.
One reason you might decide to not read Part II is because you're afraid it's too hard to understand. Technology, however, can be explained at many different levels. Some of these levels are too abstract to be useful; some are too detailed to be understandable. The trick is striking the right balance.
That's what Part II is about for non-technical readers: taking important computer concepts, picking the ones that matter, and explaining each of them in a few minutes based on common sense. Why does it take seven chapters? Because the computer industry has developed some amazing and amazingly useful concepts in 40 years. Simply put, there are seven chapters of explanation because there are seven chapters of material worth explaining.
Never trust anyone over thirty. That was the motto of the generation growing up in the '60s. And that is the motto of many personal computer-based developers who just don't know what to think about mainframes, databases, and all the professionals who work with them.
Never trust anyone under thirty. That's what many of those mainframe-based professionals think about the undisciplined, inexperienced youngsters producing all those flashy (but shallow) applications running little toy PCs.
One reason for technical people to read Part II is because it builds some bridges between these two camps. You can't afford to choose between the large application-centered, database-oriented world of the mainframe, and the personally focused, graphical world of the PC. You need them both, and bridges are required to make that fusion happen.
The American Heritage Dictionary defines philosophy as "the critique and analysis of fundamental beliefs as they come to be conceptualized and formulated." Many of the fundamental beliefs driving the computer industry need that kind of critique and analysis much more frequently than is normally the case today. Can PCs replace mainframes? That question can't be answered rationally until some other questions are asked. What makes a mainframe different? Is it just a bigger PC, or is a PC just a smaller mainframe? What about LANs -- where do they fit into this picture?
The same dictionary also talks about philosophy in terms of investigating the causes and laws underlying reality. That's what the next seven chapters are about.
Most people intuitively know what a personal computer is, but what in the world is a server? The term server has two general connotations:
![]() | A piece of hardware that provides shared services in a
networked environment |
![]() | A software component that provides a generalized functional service to other software components |
The first connotation is relatively easy to deal with -- it's the subject of this chapter. The second use of the term is much more abstract, and I talk about it later in the book when I discuss the whole client/server issue in more general terms. So for now, server means a piece of hardware -- a computer playing the role of a server.
The beauty of personal computers is that they are personal -- dedicated to the needs of an individual -and not shared. At the same time, most people need to share things all the time; that's where the server comes in. The role of a server is to facilitate sharing; it is a broker of shared information and services.
Since this book uses the terms server and service quite frequently, let's see how the American Heritage Dictionary defines service:
"1. The occupation or duties of a servant. 2. Employment in duties or work for another. 3. Work or duties performed for a superior. 4. Work done for others as an occupation or business: provides full catering ser- vice. 5. A facility providing the public with the use of something, such as water or transportation. 6. An act of assistance or benefit to another or others; favor."
96
Looking at all these definitions, one ends up with the idea that a server does work for others. That's exactly right: the purpose of a server is to do work for all the personal computers that depend on it. Why can't they just do the work themselves? Generally, because most of the server's work involves managing shared resources -- resources that are used by many people, by either one person at a time or several people simultaneously. Because personal computers are not shared, they have no way of easily coordinating with other computers when it comes to these shared resources. That's why servers are needed.
If servers provide services, for whom do they provide them? Personal computers used by individuals, of course. Because both the servers and the machines they provide services for are computers, there should be a term to describe the computers that receive the services. You guessed it- client. So the first definition of client/server revolves around shared computers called servers that manage shared resources and provide access to those shared resources as a service to their clients. As I discuss later, this is only the simplest and least exciting form of client/server, but it provides a simple and solid foundation to begin exploring the topic; the following section explains more about what servers really do and how they came to do it.
In the late '70s, personal computers had become cheap enough to sit on desks, but printers and disks were still expensive. Because most people don't print all day long, the obvious solution was to share the printer. Later, as storage became more of an issue, sharing expensive disks became a useful solution, as well.
As long as all the PCs sharing a printer are near each other, sharing can be accomplished by moving the printer and switching cables. After a while, though, particularly when many PCs are involved, cable switching becomes tedious. Another alternative, often referred to as sneakernet, is to carry floppy disks back and forth. This way, the printer remains connected to one computer, perhaps at the desk of an administrative assistant; users carry their files on a floppy disk to get them printed. Of course, this introduces other inconveniences. And, in both cases, people end up physically waiting in line to print.
Before long, switch boxes became common; these allowed a printer to be shared by several personal computers without requiring physical movement. Some sophisticated switches even detect incoming printing and switch the printer to the correct computer automatically. At this point, two problems are left: users still have to wait in line to the get to the printer during busy periods, and even the best switches can handle only small numbers of computers.
Finally, around 1982, as local-area networks (LANs) were becoming practical, the idea of having a computer manage the printer started becoming popular. On a LAN, every computer is connected to every other computer. So if one of the computers is dedicated to managing a printer, that computer and the printer attached to it are
97
available to all other users. At the expense of now having a general-purpose computer replace the switch box, users gain the advantage of all computers on the network having access to the printers managed by that computer. That computer managing the printer is called a server. It is serving the other computers by providing them with print services -services based on the availability of a printer.
Beyond increased access (broader switching capabilities), how can the server help? First, it can spool printing. Whenever a personal computer on the network is ready to print, the server can accept its printed output immediately. If the printer is currently busy printing something else, the server can save the output to disk until the printer is free; this is called spooling. Even if the printer is free, the server can still help by speeding up the process. Normally, a computer can generate output much faster than even the fastest printer can print it. After initiating the printing, however, the server can spool all of the output for the requesting computer so that while the server manages the completion of the printing process, the requesting computer can become free to do other work very quickly.
Looking deeper into the intricacies of printing, a server can provide a rich menu of services around this apparently simple function:
![]() | The server can manage several printers, automatically
sending printing to the first free printer. The user gets
the benefit of load balancing across several printers. |
![]() | The server can keep track of special paper and ensure that
a print job is held in its queue (the queue is the
waiting line that print jobs are kept in until it is their
turn to be printed; the server may have several such queues
or lines) until at least one printer has the right kind of
paper loaded. |
![]() | Print jobs can be scheduled to run at regular intervals;
because the server is turned on all the time, it can run
the jobs even if the original requester's machine is not
even connected at the time. |
![]() | If a print job fails, perhaps due to a paper jam or power
failure, the server can restart the job from its spool file
without asking the user to re-enter the print request. |
![]() | Access to printers can be both extended and restricted.
After expensive devices, such as color printers, are
attached to a server, they become broadly available on the
network. At the same time, the server can be programmed to
accept jobs only from specified users or to look for a
password before accepting printing, thus protecting
expensive printers from being abused. |
![]() | The server can keep track of the workload, print usage reports, and identify potential bottlenecks that may suggest adding printers, sending work to other servers, and so on. |
98
Generically, these services are a function of the fact that the server is both specialized and shared. Because it is shared, it can balance work across many printers and provide broad accessibility. Because it is dedicated to this service, the print server can be left on all the time, and users can count on it doing its assigned job. Best of all, no matter how loaded (or overloaded) the server gets, nobody's personal machine is directly affected.
Before leaving the print server and moving on to disks, the next section discusses how the server actually works. In particular, how is printing sent to the server instead of to a local printer?
Before the introduction of the server, when a user wanted to print, that printer was always directly attached to his or her computer. Generally, computers are built with a fixed number of printer ports. A port is a plug or socket that an external device, such as a printer or modem, can plug into. Typically, these ports are called LPT1 , LPT2, and LPT3. In addition, most personal computers have up to four communications ports (COM1-COM4) that also can be used for printing. The computer's operating system has built-in facilities to handle printing, directly tied to the ports just described, and the application software uses those facilities to generate printed output. So given all of that, how does output get sent to the server without the application knowing?
Here's the problem. Even in 1982, when print servers were starting to be available, there was already a lot of application software written -- WordStar, dBASE, 1-2-3, VisiCalc, and thousands of other packages. All of these packages already knew how to print, and any "solution" that made that software no longer work would be unacceptable. The application software thought it knew exactly how to print, and, even worse, this knowledge was used by the application in other ways, too -- beyond pure output. For example, the application used the names of the printer ports to ask the user which printer to use. So the question was, is there a way to give the user, the application software, and the local operating system access to networked printers, while still somehow making those printers look local? That's exactly what the network software running in each workstation does with the help of the network server; it makes a remote printer appear to be a physically attached local printer. All of this is accomplished through a sleight of hand called redirection: the application thinks it is sending output to a local printer, but the network redirects that output invisibly to the server.
Even in today's networking software, an essential function of the network is to fool the user's personal computer into thinking that it has access to some nonexistent local facilities. More correctly, the facilities that appear to be local do exist, but they are attached to another computer called a server that resides in some completely different
99
network location. When the LAN software is installed in your personal computer, it includes a redirector that intercepts printed output (and as is discussed later, disk requests) and sends that output across the network to the server.
Conceptually, the network and server are providing the user's computer with a logical printer. In other words, the user's computer thinks that it is physically connected to a printer. To the application software, the virtual, or logical, printer acts in every way like a real printer. More importantly, the printer is shared by many users, but this too is completely hidden. So the user's computer acts as if it has a local, dedicated printer, and the print server ensures that this illusion remains intact.
The first IBM PC offered either a floppy disk or a cassette tape interface. Unfortunately, both floppies and cassettes are too slow and small to store large amounts of information. Further, hard disks were so expensive that users couldn't afford to have their own. As a result, disk drives were the second major resource usually attached to servers.
In the early 1980s, many users shared the hard disk in a server, but only in a very limited sense. Borrowing from the successful printer sharing model, early network software gave each user the illusion of a dedicated, personal, local disk drive. In fact, the early documentation for these systems described these shared disks as logical floppies. Typically, a personal computer at that time had one or two floppy disk drives used to store all information. The server provided the illusion of having extra floppy drives. If the first two drives were drives A: and B:, the server magically added drive C:, and maybe even drive D:, as well. To the user, the logical floppies were like local floppies in every way but one: the disks couldn't be taken out of the computer.
Looking at it from the server perspective, you can see how limited this sharing model really is. The server starts out with a reasonably large hard disk drive. This drive is then divided into pieces of a fixed size that correspond to the logical floppy disks. As each user connects to the server, the user is, in turn, connected to their personal logical drive. This model, no longer very common, is referred to as disk sharing or disk service. Yes, the server was sharing its expensive hard disk among many users, but none of those users could share any information with other users. Short of sending physical floppies back and forth, no facilities were provided for the users to exchange data (technically, primitive facilities for true sharing existed, but practically no one made use of them).
100
With all of these limitations, was having the server around much of a plus? Not by today's standards, of course, but the disk service model did offer significant benefits to users:
![]() | Expensive disks could be shared by many users who
otherwise could not afford permanent storage. |
![]() | Even running across the network, the fast server disk
often gave better performance than the slower disk of a
personal computer. Even today, servers often have disks
that are faster than the disks found in local workstations.
In addition, the server generally has large amounts of main
memory cache dedicated to making its disks appear really
fast. All of this gives users the luxury of both shared
resources and better performance. |
![]() | By spreading many users across a larger disk, space was
used more efficiently; individual users were less likely to
run out of space. |
![]() | By assigning an administrator to take care of the server, backup could be automated. Users never back up their own computers, even today. However, if the server was backed up, many users could be saved the grief of losing data. |
In fact, what you see here is the beginning of a trend, which only now is being re- versed, in which servers are more popular for sharing printers than for sharing disk- based information. The problem is that in a world where the unit of sharing is the logical disk, attaching printers to a server has many more benefits than attaching disks. As a result, after the introduction of the XT, personal hard disks became increasingly common in spite of the benefits of shared disks. Printers, however, were another story .Early printers, based on dot-matrix technology, fell rapidly in price. On the other hand, as prices fell, newer technologies became more attractive, and users continued to want more expensive printers. For instance, after being exposed to the speed and quality of early laser printers, most users quickly became committed to them. Later, as these printers fell in price, the technology of newer PostScript-based printers continued to keep prices high. More recently, as advances in color, speed, resolution, and paper handling become more common, users continue to find that the printer they really want is the one they can't afford. The ultimate answer, therefore, has remained constant: use a server, share the printer.
Logically, the first generation of servers introduced the concept of logical devices: the network offered the user access to a variety of shared facilities attached to servers. The server managed these facilities, providing them to many individual personal computers all at the same time; each user, however, would act as if the logical device were all his own, physically attached to his computer. As far as sharing printers goes, this model was great at the time it was invented and continues to be a winner today. For
101
unlocking the true potential of servers as information-sharing engines, though, there needs to be some model for sharing information stored on disks that goes way beyond the notion of a logical floppy. As a first step in that direction, consider how a disk can act like a file cabinet, providing a way of organizing large amounts of information so that they can be stored and retrieved quickly and reliably.
Imagine a small law office with lawyers and other staff members all serving a common set of clients (serving and clients are meant here in the traditional sense -- professionals have always had clients to whom they provide services). How does the law office organize its information on paper, and how would the same information be organized in a computer?
Typically, an office organizes its clients and cases in file folders, which sit in file cabinets. Ultimately, though, after finding the right cabinet, opening the right drawer, and finding the right file, you end up with a document in your hand. The point of most filing systems, in the real world, is to organize documents.
In the computer world, as in the real world, the document is the basic unit of information; however, in the computer world, the information is stored on a disk instead of in a file folder. A document can be a spreadsheet, a memo generated by a word processor, a project plan, a slide presentation, or even a database. Later, when I come back to the topic of databases, you'll see that databases also can be more complex, intrinsically shared structures. For most users, though, a database is first thought of as a simple, personally owned form of document that holds collections of records. For example, a secretary preparing for a conference may have an agenda, a budget, a project plan, and an invitation list. To the secretary, all four items are just different classes of documents, worked on with a variety of tools and all supporting the common goal of having a successful conference.
Computer documents are stored in tiles. Again, the term
tile can have many meanings, but for most users, a file is
the place on the computer's disk where documents are stored.
Typically, at the time the document is stored, the file in which
it is placed is given a name, and that name becomes the handle
for retrieving the document in
the future.
Before 1983, most personal computers assumed that every user would deal with a relatively small set of files, all of which could be kept in one place. In an office environment, this is the equivalent of keeping all your work in a single file drawer, with no hanging file folders to provide a second level of organization. Even for an individual, a simple single stack of file folders quickly becomes too limited a structure to handle large amounts of information.