Slashdot Mirror


MySQL Falcon Storage Engine Open Sourced

An anonymous reader writes "The code for the Falcon Storage Engine for MySQL has been released as open source. Jim Starkey, known as the father of Interbase, is behind its creation; previously he was involved with the Firebird SQL database project. Falcon looks to be the long-awaited open source storage engine that may become the primary choice for MySQL, and along the way offer some innovation and performance improvements over current alternatives." This is an alpha release for Windows (32-bit) and Linux (32- and 64-bit) only, and is available only in a specially forked release of MySQL 5.1.

24 of 235 comments (clear)

  1. MySQL's counter-attack to Oracle's advances by atomic777 · · Score: 5, Informative

    I've been very excited since I first heard about this new storage engine adapted from Netfrastructure. Not only does it give MySQL a transactional storage engine that is not controlled by a hostile company, but the engine appears to be designed from the bottom up to support web traffic. Jim gave a great talk at the Boston MySQL meetup that you can watch here http://video.google.com/videoplay?docid=1929002440 950908895

  2. Re:Please explain by Anonymous Coward · · Score: 5, Informative

    MySQL itself is Open Source. But that only gives you a few storage Engines. The specific storage engines have different licenses. It is perfectly possible to have commercial storage engine for MySQL.

    MySQL has no "native" way to store or obtain data - everything goes through plugins, some of which ship with MySQL some don't.

    MyISAM - the most common and fastest. But no transactions, no ACID, etc. Good for many read-only or non critical tables.
    InnoDB - licensed from InnoSoft (now oracle). GPL for non commercial, extra dollars for commercial. Transactions, ACID, but a bit slow. .... other storage engines also exist

  3. Re:Please explain by SirThomas · · Score: 5, Informative

    Stolen directly from the mysql website:

    Falcon has been specially developed for systems that are able to support larger memory architectures and multi-threaded or multi-core CPU environments. Most 64-bit architectures are ideal platforms for the Falcon engine, where there is a larger available memory space and 2-, 4- or 8-core CPUs available. It can also be deployed within a standard 32-bit environment.

    The Falcon storage engine is designed to work within high-traffic transactional applications. It supports a number of key features that make this possible:

            * True Multi Version Concurrency Control (MVCC) enables records and tables to be updated without the overhead associated with row-level locking mechanisms. The MVCC implementation virtually eliminates the need to lock tables or rows during the update process.
            * Flexible locking, including flexible locking levels and smart deadlock detection keep data protected and transactions and operations flowing at full speed.
            * Optimized for modern CPUs and environments to support multiple threads allowing multiple transactions and fast transaction handling.
            * Transaction-safe (fully ACID-compliant) and able to handle multiple concurrent transactions.
            * Serial Log provides high performance and recovery capabilities without sacrificing performance.
            * Advanced B-Tree indexes.
            * Data compression stores the information on disk in a compressed format, compressing and decompressing data on the fly. The result is in smaller and more efficient physical data sizes.
            * Intelligent disk management automatically manages disk file size, extensions and space reclamation.
            * Data and index caching provides quick access to data without the requirement to load index data from disk.
            * Implicit savepoints ensure data integrity during transactions.

  4. Re:Please explain by AslanTheMentat · · Score: 3, Informative

    This is a real quick, detailess explanation, but explanation nonetheless... Essentially there are several options for "storage engine", each with its own set of features... The vanilla engine w/ MySQL is MyISAM, which among other things doesn't support transactions. In lieu of these shortcomings there is also the InnoDB engine, which does do transactions, etc.

    The Falcon engine is from a renowned database developer, and as such has all sorts of neat features.

  5. Re:Okay, I'm stupid. What is a storage engine? by rhavenn · · Score: 2, Informative

    Ugh, no you haven't. The storage engine is how MySQL stores the actual data on disk. There are different formats, each have their own benefits, issues and work arounds. Think of MySQL as a SQL interpreter talking to different storage engines on the back. The default is MyISAM, but InnoDB and ISAM are others.

  6. Re:Please explain by namityadav · · Score: 2, Informative

    Are you serious? Do you think that MySql for a developer is equivalent to wrench for a mechanic? What about people who develop device drivers? What about people who write the kernel? I can go on and on for fields that have just no need / use for MySql or any other database. Not everybody in this world is doing *exactly* what you are doing.

  7. Re:Please explain by Entrope · · Score: 2, Informative

    This is probably a FAQ, and wandering off-topic, but exactly how the cheese do you have "GPL for non commercial, extra dollars for commercial" and expect it to work? Even InnoDB's licenses page implies that the limitation is "GPL, extra dollars for non-copyleft".

  8. I had to drop MySQL by caluml · · Score: 2, Informative

    I was forced to learn Postgres because I wanted to do a SELECT * FROM foo WHERE bar NOT IN ( SELECT x FROM y WHERE z > 4 ) type query - basically a negative subselect. I couldn't do (or couldn't work out how to) use table JOINs to perform the same thing, and at the time, MySQL didn't do it.

    I'm so thankful. Postgres is so much better. And the table JOIns I did have ran so much faster in PG. s/mysql_/pg_/g *.php

    1. Re:I had to drop MySQL by RobKow · · Score: 2, Informative

      Well, for your particular example:

      SELECT * FROM foo LEFT OUTER JOIN y ON foo.bar = y.x AND y.z > 4 WHERE y.x IS NULL ;)

      But I'm sure there are nasty cases where you can't substitute joins readably or maybe at all.

  9. Oh, please by Lisandro · · Score: 3, Informative

    Falcon looks to be the long-awaited open source storage engine that may become the primary choice for MySQL, and along the way offer some innovation and performance improvements over current alternatives.

    Come on. Give me PostgreSQL any day. After fiddling with MySQL at work for a few custom developments (both versions 4 and 5.0.2) i'm ready for anything else. Gave PSGSQL a shot at home and it runs very nice, with lots of advanced features. Anyone with real-world deploying feedback to share?

    1. Re:Oh, please by killjoe · · Score: 2, Informative

      Tried it. Found out there was no support for case insensitive collations and then dropped it. Every other database in the world supports case insensitive collations so now I am testing out firebird, mysql and db/2. All are OK, I probably don't need everything db/2 offers so I will most likely end up with one of the open sourced ones.

      --
      evil is as evil does
  10. Re:Please explain by Entrope · · Score: 2, Informative

    I mentioned a valid dual-licensing offer in my post. The original post said that the GPL version came with a restriction on commercial use, which would be contrary to the terms of the GPL as they are generally understood. Thanks for reading the details before you reply!

  11. Re:VACUUM? by GroovinWithMrBloe · · Score: 2, Informative

    Seeing as it has its base in Interbase, I would be running away as quick as possible. Interbase/Firebird(?) has a SWEEP process (read: Vacuum), however it was far more sluggish than Postgres. Also, the MVCC has a transaction count limit on Interbase where you hit ~2 billion transactions you MUST do a backup/restore -- a simple sweep won't cut it. I was working with a database that eventually required bi-monthly restores and each restore took over 12 hours. I also always found it funny that Interbase's row version was stored as a signed int (hence 2 billion version), rather than an unsigned int (giving 4 billion versions). When we moved to Postgres, on the same hardware, the backup went from over 12 hours to under 50 minutes. This is also due in part to the better tweaking capabilities available in postgres. Interbase is designed to be an easy to use/setup database system, which works fine for small cases, but when you start dealing with tens of millions of transactions per day, it becomes more work than it is worth. So if Falcon is anywhere like Interbase/Firebird, I'd be keeping well clear of it.

  12. Re:New Microsoft Sql Server by Lisandro · · Score: 1, Informative

    New Microsoft Sql Server coming soon to a store near you. Cant wait for M$ to secretly add this to their SQL server and call it innovation.

    Laugh all you want, but MS is one of the leaders in the database world with SQL Server for Windows, and have been for a while now. SQLS is by a long, long shot the best software product Microsoft has ever released, IMHO, and keep doing, right to the latest version. It works great.

  13. Re:It might have potential... by TopSpin · · Score: 2, Informative

    for smaller databases, but limiting the tablespace to a single file per database/schema doesn't sound very flexible, and won't allow DBAs to maximize their disk throughput.

    That isn't necessarily the case. Recently it has become popular to aggregate spindles into single stripe/mirror volumes with large stripe widths. This spreads I/O operations uniformly across disks. All disks contribute their IOPS capacity to all operations. Large stripe widths attempt to leverage high sequential IO bandwidth.

    Oracle calls this policy SAME; Stripe and Mirror Everything. Their Automatic Storage Management (ASM) is an implementation of SAME, and it is recommended for use with both OLTP and OLAP applications.

    If I had to make a MySQL Falcon instance fast I would build a large stripe/mirror volume for the (single) tablespace file. The point is that isolating high load tables on separate spindles isn't necessarily the best policy, according to current thinking. Of course there are other reasons for isolating parts of a database, but you only mentioned throughput.

    --
    Lurking at the bottom of the gravity well, getting old
  14. Re:MySQL versus PostgreSQL by swillden · · Score: 2, Informative

    But in something as mission-critical as a database, of all things, reliability trumps everything.

    That depends on the database.

    --
    Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
  15. Please explain Blobs. by Anonymous Coward · · Score: 1, Informative

    "MyISAM - the most common and fastest. But no transactions, no ACID, etc. Good for many read-only or non critical tables.
    InnoDB - licensed from InnoSoft (now oracle). GPL for non commercial, extra dollars for commercial. Transactions, ACID, but a bit slow. .... other storage engines also exist"

    Unfortunately none of them handle binary blobs very well. e.g. video, audio, pictures, etc. Text is what they're optimized for.

  16. MVCC: Multi-Version Concurrency Control by DrJimbo · · Score: 4, Informative

    The big thing Falcon brings is MVCC which allows safe simultaneous reading and and writing without locks.

    Here is a good explanation of PostgreSQL's MVCC.

    --
    We don't see the world as it is, we see it as we are.
    -- Anais Nin
    1. Re:MVCC: Multi-Version Concurrency Control by nuzak · · Score: 1, Informative

      Actually, InnoDB uses MVCC too. Hell, even BDB uses MVCC.

      Getting something optimized for read loads that scales in size better than MyISAM seems to be the primary motivation for Falcon.

      --
      Done with slashdot, done with nerds, getting a life.
  17. Re:New Microsoft Sql Server by Anonymous Coward · · Score: 3, Informative

    Umm, Postgres has had automatic row-level compression (automatic compression of TOASTed) values for some time now.

  18. Re:It's only a matter of time by Zontar+The+Mindless · · Score: 3, Informative
    mysql had better develop it's *own* engine


    MySQL *have* done so with Falcon. MySQL *do* own Falcon.

    [Jim has worked on other RDBMS in the past] != [MySQL do not own the one he's currently working on]
    --
    Il n'y a pas de Planet B.
  19. Re:Please explain by Anonymous Coward · · Score: 1, Informative

    As for another new storage engine coming out soon: MySQL and NitroSecurity have also recently announced that they are working together to integrate NitroEDB into MySQL as a storage engine, promising high-speed insertion and query rates even using VLDB data volumes.

  20. Re:Please explain by Torst · · Score: 2, Informative

    My understanding is that the Falcon engine, like MyISAM and SQLite, supports the SYNTAX for defining foreign keys, but do NOT actually enforce the foreign key constraints! That's quite an important difference. I'll stick to PostgreSQL for when I care about relational integrity.

  21. Don't underestimate this one by dybdahl · · Score: 4, Informative

    I've read through all comments with 2 or more in rating, and it seems that people really underestimate what Jim is doing here.

    We're talking in-memory MVCC here. This means you can add 1000 records, do a rollback, and the harddisk hasn't been accessed. Even if you commit, performance will eventually be magnificent compared with on-disk MVCC systems. You can run larger systems on one server with this, than you would be able to run on a cluster with other database systems.

    This system has been designed to provide very good performance improvements for those who do know how to create SQL statements, but probably even better performance improvements for those who don't. And we don't have a tradeoff between performance and transactions any more - transactions and better performance are both included.

    Also, please note that this technology will make MySQL a trustworthy data storage for many commercial applications out there, giving added value to their apps and their businesses. It will also enable small but very skilled development teams able to use MySQL as a trustworthy database for specialized applications - previously only Firebird and Postgresql were able to provide this for free, and even though Firebird has a very high deployment in USA's top 500 companies, postgresql seems to be very much *nix only in deployment statistics.

    I have been programming database applications for more than 20 years, and have been programming Oracle, MSSQL, MySQL, postgresql, Firebird, dBase, Paradox, Access and other databases. I see Jim's contributions to MySQL as extremely important for the database market. Instead of having "just" a transaction layer on top of a storage layer, MySQL now provides mechanisms that give this design an advantage over those database systems where the transactions are stored on disk (like Firebird, Postgresql).

    And - by the way - this has NOTHING to do with "optimizing for web applications". Web applications are just as diverse as GUI applications and other systems, and GUI applications will benefit from this as much as web applications.