计算机专业中英文论文

  • 格式:doc
  • 大小:49.50 KB
  • 文档页数:10

MySQL History and Architecture

MySQL history goes back to 1979 when Monty Widenius, working for a small

company called TcX, created a reporting tool written in BASIC that ran on a 4

Mhzcomputer with 16 KB RAM. Over time, the tool was rewritten in C and ported to

run on Unix. It was still just a low-level storage engine with a reporting front end. The

tool was known by the name of Unireg.

Working under the adverse conditions of little computational resources, and

perhaps building on his God-given talent, Monty developed a habit and ability to

write very efficient code naturally. He also developed, or perhaps was gifted from the

start, with an unusually acute vision of what needed to be done to the code to make it

useful in future development—without knowing in advance much detail about what

that future development would be.

In addition to the above, with TcX being a very small company and Monty being

one of the owners, he had a lot of say in what happened to his code. While there are

perhaps a good number of programmers out there with Monty’s talent and ability, for

a number of reasons, few get to carry their code around for more than 20 years. Monty

did. Monty’s work, talents, and ownership of the code provided a foundation upon

which the Miracle of MySQL could be built.

Some time in the 1990s, TcX customers began to push for an SQL interface to

their data. Several possibilities were considered. One was to load it into a commercial

database. Monty was not satisfied with the speed. He tried borrowing mSQL code for

the SQL part and integrating it with his low-level storage engine. That did not work

well, either. Then came the classic move of a talented, driven programmer: “I’ve had

enough of those tools that somebody else wrote that don’t work! I’m writing my

own!”Thus in May of 1996 MySQL version 1.0 was released to a limited group,

followed by a public release in October 1996 of version 3.11.1. The initial public

release provided only a binary distribution for Solaris. A month later, the source and

the Linux binary were released.

In the next two years, MySQL was ported to a number of other operating systems

as the feature set gradually increased. MySQL was originally released under a special

license that allowed commercial use to those who were not redistributing it with their

software. Special licenses were available for sale to those who wanted to bundle it

with their product. Additionally, commercial support was also being sold. This

provided TcX with some revenue to justify the further development of MySQL, although the purpose of its original creation had already been fulfilled.

During this period MySQL progressed to version 3.22. It supported a decent

subset of the SQL language, had an optimizer a lot more sophisticated than one would

expect could possibly be written by one person, was extremely fast, and was very

stable. Numerous APIs were contributed, so one could write a client in pretty much

any existing programming language. However, it still lacked support for transactions,

subqueries, foreign keys, stored procedures, and views. The locking happened only at

a table level, which in some cases could slow it down to a grinding halt. Some

programmers unable to get around its limitations still considered it a toy, while others

were more than happy to dump their Oracle or SQL Server in favor of MySQL, and

deal with the limitations in their code in exchange for improvement in performance

and licensing cost savings.

Around 1999–2000 a separate company named MySQL AB was established. It

hired several developers and established a partnership with Sleepycat to provide an

SQL interface for the Berkeley DB data files. Since Berkeley DB had transaction

capabilities, this would give MySQL support for transactions, which it previously

lacked. After some changes in the code in preparation for integrating Berkeley DB,

version 3.23 was released.

Although the MySQL developers could never work out all the quirks of the

Berkeley DB interface and the Berkeley DB tables were never stable, the effort was

not wasted. As a result, MySQL source became equipped with hooks to add any type

of storage engine, including a transactional one.

By April of 2000, with some encouragement and sponsorship from Slashdot,

master-slave replication capability was added. The old nontransactional storage

engine, ISAM, was reworked and released as MyISAM. Among a number of

improvements, full-text search capabilities were now supported. A short-lived

partnership with NuSphere to add Gemini, a transactional engine with row-level

locking, ended in a lawsuit toward the end of 2001. However, around the same time,