• Multiuser simultaneous access.
• Easy access from APIs written in different languages. The two most well-known APIs are Open Database Connectivity and Java Database Connectivity. An API provides connectivity to the database, and SQL statements manipulate it. The combination of APIs and SQL establishes nearly complete interoperability between the database and a client.
• Support for multiple operations that happen either all at once or not at all. A true transactional database supports atomicity (all-or-none operations), consistency (a transaction never leaves the database in an inconsistent state), isolation (transactions are separated from each other until they are completed), and durability (the database keeps track of pending changes so that the server can recover from an abnormal situation). Together, these are called the ACID properties.
• Sophisticated search capabilities, such as joins, subselects, triggers, and views.
• Consistent online backups performed while the database remains in a read-write state.
• Support for managing large amounts of data while maintaining high performance.
• Replication support that scales and achieves high availability.
• commercial support of at least modest usefulness, and
• a robust and complete logging mechanism for abnormal end conditions.
• It's easy to use, install, and maintain. It's well documented, has good support through the users' group, and also offers commercial support.
• It offers several storage models, such as InnoDB, MyISAM, and FullText. InnoDB provides MySQL with a transaction-safe (ACID-compliant) storage engine that includes commit, rollback, and crash-recovery capabilities. It also implements locking on the row level and provides a consistent nonlocking read in SELECT statements. MyISAM supports storage of more than a terabyte of data in more than 200 tables in a single project database.
• It's fast. MySQL can manage links among our 1.5 billions rows of data in several virtual tables. It can handle hundreds of clients connecting to the server and using multiple databases simultaneously.
• It provides fault tolerance, load balancing, and security via replication. Replication is not a backup policy, but it provides a basic level of protection against hardware failure. We also use it to update a server inside the firewall and propagate the data to servers outside the firewall in read-only mode.
Mariella Di Giacomo is a member of the Library Without Walls team at the Los Alamos National Laboratory Research Library. Contact her at firstname.lastname@example.org or email@example.com.