计算机专业中英文论文
- 格式: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,