Stories
Slash Boxes
Comments

News for nerds, stuff that matters

Slashdot Log In

Log In

Create Account  |  Retrieve Password

MySQL to Get Injection of Google Code

Posted by ScuttleMonkey on Wed Oct 24, 2007 11:43 AM
from the who-to-trust-on-replication dept.
inkslinger77 writes to mention that MySQL has published their software roadmap out through 2009 and it includes an injection of code from Google. Google remains relatively secretive about how their systems work but they are one of the largest users of MySQL. Earlier this year Google signed a Contributor License Agreement which provides a framework for them to contribute code to MySQL. "The search company has done a lot of work customizing MySQL to meet its special needs, which include better database replication, and tools to monitor a high volume of database instances, Axmark said in an interview at MySQL's user conference in Paris. MySQL will include some of those capabilities in future versions of its database, probably in point upgrades to MySQL 6.0, which is scheduled for general availability in late 2008, Axmark said."
+ -
story

Related Stories

[+] IT: Sun Snags Open Source Virtualization Company, Innotek 49 comments
BobB writes to mention Sun has acquired Innotek, open source desktop virtualization vendor. "VirtualBox will remain free of charge under Sun and be placed in the company's xVM portfolio of virtualization products, Steve Wilson, Sun's vice president of xVM, wrote in a blog posting. 'If we're going to continue to give it away, why is Sun investing in VirtualBox? In short, because the developers that build applications have a huge amount of influence on how they're deployed," Wilson wrote in his blog. "We believe that developers using VirtualBox can help guide their friends in the data center towards xVM Server as the preferred deployment engine. Beyond that, I think there is a huge opportunity to link with Sun's other developer-related assets like NetBeans, Glassfish and (soon) MySQL.'"
This discussion has been archived. No new comments can be posted.
The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
 Full
 Abbreviated
 Hidden
More
Loading... please wait.
  • Injection? (Score:5, Funny)

    by Tetsujin (103070) on Wednesday October 24 2007, @11:48AM (#21101589) Homepage Journal
    Somehow when I put "SQL" and "injection" together, I don't like the result...

    Well, except for when it involves Little Bobby Tables [xkcd.com]...
    • please enter your email: lpage@google.com' OR 1=1
    • Re: (Score:3, Insightful)

      Yeah, I was about to post the same thing. Can we use some different terminology when talking about helpfully contributing code to a database project?
    • Re:Injection? (Score:5, Insightful)

      by necro2607 (771790) on Wednesday October 24 2007, @12:52PM (#21102579)
      Yeah, who writes these headlines? It's like, let's throw together the most fucking sensationalist possible combination of words to evoke certain responses in peoples' minds when they read this headline. Instead of just writing something constructive like "MySQL adds code from Google", it has to be some sensationalistic crap so as to make people go "OMG SQL injection?!? Sum1 haxed MySQL??" and immediately read the article. What is this, FOX News or something? :P
  • Hells yeah (Score:5, Insightful)

    by rsborg (111459) on Wednesday October 24 2007, @11:49AM (#21101597) Homepage
    Eat that, Oracle.
    Seriously the database layer is being commoditized, and MySQL and PostgreSQL are leading the way.

    My only question, was Google required to disclose these changes, or are they just doing the right thing (again)?
    • Re:Hells yeah (Score:5, Informative)

      by Dan Berlin (682091) on Wednesday October 24 2007, @11:58AM (#21101749)
      We don't distribute it, so we aren't required to submit the changes back.
      We of course, try to contribute back all the changes we possibly can.

      If you look around, you'll see we just don't publicize all the changes we contribute back (and we in fact, didn't publicize this one ourselves).
    • Maybe they're doing the selfish for-profit thing, which can very well be 'the right thing' for everyone else.

      By putting their code back into the main branch, they do not have to carry the perpetual maintenance cost of the fork and get to distribute the development cost across the rest of the mysql devs/users.

      • Look in the corporate space. Oracle is everywhere. SQLServer is around (not popular in my experience). Mysql is nowhere.

        Define "coprorate space." Big companies tend to be Oracle or SQL Server shops, true; really big companies tend to be Oracle or DB2. But there are a lot of small and medium-sized businesses using MySQL -- and because there a lot more SMBs than there are megacorporations, and because DBA demand doesn't scale linearly (a 10,000-employee corporation doesn't need a hundred times as many DBAs
        • You'd be wrong then. Have a look at the Oracle Store and you can get Standard One for $149 per user (5 User minimum @$745.00)
          Or you could get unlimited users for $4995 per CPU....

          Oracle is expensive, its just not that ridiculously expensive.

            • Re: (Score:3, Informative)

              Yep Standard is quite different to Enterprise Edition but you can't seriously be comparing MySQL with Oracle Enterprise Edition!

              I can't think of anything that is in MySQL that Standard Edition doesn't deliver. And if your looking at EE then really for $40k per CPU you'd be running
              something that'd be using the EE features like Label Security or some of the Partitioning / OLAP stuff.

              Admittedly as an OCP I might be biased but I wouldn't go near MySQL when there are things like PostgreSQL around, something abo
  • It's nice to see them giving back.

    If only Microsoft would give back on all the mods it has made to the Unix tools. Example: http://technet.microsoft.com/en-us/interopmigration/bb380242.aspx [microsoft.com]
    • Re: (Score:3, Informative)

      Do we really *want* Microsoft to give back the code they've made to *nix tools?
      • Anything Microsoft has tried to give to the FLOSS community has had strings attached.
      • Just take a look at any of their OS's, particularly ME and Vista.
      • Take a look at OOXML.
      • Take a look at their "open" license and note that it isn't very open.
      • Even Solitaire has a EULA!

      Okay, so I made that last one up. I'd provide links, but I'm lazy. I'd also try and look up a eula for solitaire, but I should be doing the work I'm actua

  • by Doc Ruby (173196) on Wednesday October 24 2007, @12:02PM (#21101803) Homepage Journal
    I prefer Postgres to MySQL. I wonder whether these MySQL revisions will be generic enough to use to improve Postgres.

    I also wish these two databases interoperated more. I'd like to use a MySQL proxy to my Postgres server, so apps depending on MySQL could still work, but use Postgres to actually process the data (or just serve as a master DB for replication). Porting apps between DBs, and huge projects to join across different apps' tables in different types of DB servers should be ancient history. Mixed DB-type clusters might not be high performance, but they'd get the iterative development started, after which performance could be just an optimization, which is the right way to do it anyway.
    • Re: (Score:3, Informative)

      I prefer Postgres to MySQL.

      Good for you. Of course, your applications may very well be of a different class, and so perhaps Postgres is a better solution. But remember, if you're doing mostly reads, and not a ton of writes, mysql will blow the socks off virtually any other solution. And, coincidentally, that pretty well describes most web applications in general, and probably Google in particular.
      • They are different. My apps mostly replace the filesystem with DB records, and do a lot of logging for analysis/reporting.

        Of course, the different scenarios we're discussing mean that MySQL would be best as a datamart frontend to Postgres. I'd love to write everything to a Postgres API, then deploy it with a script that ports the Postgres schema to a MySQL, which MySQL just replicates to the Postgres, and presents the MySQL interface to web apps. While the Postgres retains the master data, and presents an i
          • Re: (Score:3, Interesting)

            I am in fact using DBI-Link to let Postgres queries connect to data in an LDAP DB. You have good reason to proudly plug the SW :).

            You don't know any developers in NYC who would be good for throwing a MySQL datamart up on top of that, would you?
      • Re: (Score:3, Informative)

        if you're doing mostly reads, and not a ton of writes, mysql will blow the socks off virtually any other solution.

        I have a site with 3GB of database, updated once daily, in bulk; the rest of the day it's doing several reads per second over the whole thing (indexed so that it can jump to the right parts for each query; but each query tends to hit a different 5-10% of the rows, so all the data is "active"). I found switching from mysql to postgres gave quite a noticable performance increase -- the whole server was no longer crying in pain and grinding to a halt under heavy load~

        Note that the DB server only has 512MB

      • Only if you are using MyISAM tables, which can't enforce foreign key constraints. (meaning you can have junk data and the database won't tell let you input garbage rather than require valid data).

        Personally I prefer the right answer a tenth of a second slower, rather than a wrong answer fast.

        If you use Innodb tables, you have no speed gain over postgresql, and you can't handle the number of concurrent users you could with postgresql.
    • Postgres is completely different under the hood, so I don't think that's terribly likely.

      Bit of a shame in many ways, because while there are commercial addons to Postgres which give decent clustering support - either for HA or performance - AFAICT the free Postgres server can offer very little in the way of clustering.
    • Isn't there a licensing issue by transplanting to postgres. I was under the impression it was BSDL and MySQL is GPL. Obviously one could use general ideas and implement them again for postgres.

      I'm hoping that MySQL 6 is faster on other operating systems than previous versions. The current design makes many assumptions based on Linux. MySQL is running on many operating systems now and shouldn't be so OS centric. You can get binaries for Windows, Mac OS, Solaris, and many of the BSDs. Some of the FreeBS
      • Postgres is under the BSD license [freshmeat.net]. I wonder whether a developer could port the MySQL GPL code directly to Postgres, and release the Postgres diff as patch, under the GPL. Does the GPL prohibit using a GPL patch on a BSD app?
    • Applications requiring one database or another should be ancient history. However, whenever you look up a how to access MySQL from PHP, you'll find stuff that recommends using all the mysql_* functions. This is the quick way to creating an app that absolutely depends on MySQL. Really people should be using PDO [php.net], instead of mysql_ or pgsql_. Of course the real solution is to use a database abstraction layer, but I've never found a good way to create an n-tier web appliction in PHP.
      • Really people should be using PDO, instead of mysql_ or pgsql_. Of course the real solution is to use a database abstraction layer, but I've never found a good way to create an n-tier web appliction in PHP.

        Well not strictly n-tier [wikipedia.org], you can get pretty darn close with Zend_Db [zend.com] (which contains adapters to PDO), Zend_View [zend.com], and Zend_Controller [zend.com].

      • Re: (Score:3, Informative)

        Here's a simple DB Abstraction layer for Postgres. Just stored procedures, so there's zero possibility for SQL Injection.

        <?php
        class Biz
        {
        // Internal Database Functions
        static private $cs;

        static function SetConnString($connstring)
        {
        Biz::$cs = $connstring;
        }

        static private function SendQuery($q)
        {
        $db = pg_connect(Biz::$cs);
        $r = pg_send_query
        • Re: (Score:3, Insightful)

          See, that model falls apart once you have a database with 50 tables. Because you have to load and parse a lot of script for every page load. I'm not sure how much (if anything) is cached by PHP, and how much recompiling has to be done on each load. Also, if you want to break you stuff up into a lot of different classes, with each class in a different file, then it quickly becomes a large mess of stuff to include in each page. I find that this is one of the major advantages of having a compiled language.
          • Re: (Score:3, Interesting)

            I've got 86 tables at the moment in my latest project, and 231 stored procedures. It's very easy to manage, very secure, and it's easy to reuse the functionality.

            I don't bother using classes to represent the business objects, I just use database views to control the shape of the data that comes back across the stored procedures and pass the properly formatted arrays to another set of functions that generate the appropriate HTML/XHTML/XML as needed.

            When it comes time to do caching, I'll have the ability to
    • Personally, I don't trust MySQL to anything more significant than forum software. Referential integrity is important, strong typing is important, enforcement of declared constraints is important. MySQL can't be trusted with any of these things.

      For a long time, the MySQL team put forth that good design practices were not important. They never did accomplish the task of designing a good table manager. They hobbled along into enterprise space after InnoDB was written by someone else. Now it belongs to Ora
    • I think that is nearly impossible. If you want an app to work with multiple databases, then it needs to go against a standard like ODBC and be as close to the ANSI SQL standard as possible.
      • I do a lot of writes. It works better than MySQL, and was especially so when I started some of these apps and referential integrity and fuller SQL semantics were supported better by Postgres than by MySQL.

        Google had to upgrade MySQL quite a lot for its use because MySQL needed a lot of improvement. Postgres was a lot closer to what I need right from the start, without having Google's development resources.

        But then, you're an Anonymous Coward. You just like to criticize what you don't understand. If you had
  • 6.0 in 2008? (Score:4, Insightful)

    by JumboMessiah (316083) on Wednesday October 24 2007, @12:16PM (#21101977)
    Mysql 5.1 has been in preproduction since November 2005 and still isn't available as a GA release (aka don't use it in production). Are they sure they can get a 6.0 GA release out by next fall?

    This is really good of Google to contribute this back, I'm just wondering how long it will be before we all can utilize their changes. I hate to see the code stay stuck in the devel cycle for three years when Goggle is using it to their advantage right now at this very moment.
  • by LiquidCoooled (634315) on Wednesday October 24 2007, @12:44PM (#21102447) Homepage Journal
    They need to add a GOOGLE function to allow queries to be searched nicer.

    SELECT * FROM articles WHERE GOOGLE('boobies');

    something similar might be available but it is a PITA to list the fields to search and specify the operators etc
    • "They need to add a GOOGLE function to allow queries to be searched nicer.

      SELECT * FROM articles WHERE GOOGLE('boobies');"


      I don't know about MySQL, but you can pretty trivially write extensions to PostgreSQL that do exactly this kind of thing. In fact, I've written a number of such extensions to PostgreSQL that make Google resources seem like local resources in a PostgreSQL database. (This kind of deep and easy customizability is one of the things I find to be a killer feature of PostgreSQL relative
  • by shmert (258705) on Wednesday October 24 2007, @03:30PM (#21104763) Homepage
    For the Java coders out there, Google is also releasing google collections [google.com], which looks quite nice. There's a new interview here [javalobby.org] with the authors. It's fun stuff to poke around in, and appears to be extremely well-written code.

    Once this stabilizes, I'll probably be using it. It's nice to see such a direct impact on my work from their contributions. Thanks guys!

    • Re:MySQL? (Score:4, Informative)

      by nuzak (959558) on Wednesday October 24 2007, @11:52AM (#21101629) Journal
      Probably because it's a decently-performing ISAM engine with builtin replication. It's not terribly safe (index file integrity is terribly brittle) or smart (it only recently learned there isn't such a date as Feb 30), but you can still at least write ad hoc queries to your tabular data. I doubt Google is using it for HR or CRM.

    • Re:MySQL? (Score:5, Informative)

      by LWATCDR (28044) on Wednesday October 24 2007, @11:52AM (#21101631) Homepage Journal
      I prefer PostgreSQL but MySQL isn't crappy.

      For years MySQL offered better write a few read a lot databases than PostgreSQL. It may still offer better performance for those types of operations. That is the way most websites used MySQL. It is a good tool for some applications. Slashdot is one of them.
      Yes I think PostgreSQL is better but MySQL isn't crappy.

    • Re:MySQL? (Score:5, Funny)

      by Frosty Piss (770223) on Wednesday October 24 2007, @11:55AM (#21101675)

      Why did Google choose such a crappy database?
      Clearly they know something you don't.
      • They know for their particular application, if they only return 47,000 hits, instead of 49,500, it's really no big deal. If they return some pages that aren't really relevant, also not a big deal.

        That's kind of a rare use of a database.

        When most of use use databases we need real exact numbers from it. Foreign key enforcement is a must. 'Strict' is not an option.

        That's why they can use a crappy database, because their answers don't have to be complete or entirely correct. Crappy is 'good enough'
          • Re:MySQL? (Score:5, Informative)

            by LurkerXXX (667952) on Wednesday October 24 2007, @01:31PM (#21103129)
            MySQL cannot enforce foreign keys constraints on MyISAM tables. It 'kinda' can on Innodb tables.

            Having them and enforcing them so they are actually useful are 2 different things.

            And if you'd bother to RTFA, you would see that MySQL is moving to away from Innodb to 'falcon'. "but some InnoDB features, like foreign key support and full-text indexing, won't be supported until MySQL 6.1.".

            So MySQL is moving away from the only table types that can actually 'kinda' enforce the use foreign keys at all.

            I think that would make you the douche.
              • Re: (Score:3, Informative)

                MySQL has many 'gotchas'. Google around for many sites with lists of them. They are slowly cleaning them up, they have a very bad track record of not keeping data clean. Even their latest 'strict' rules still aren't all that strict. The gotchas have traditionally contained plenty of broken foreign key problems.

                The latest versions of Innodb are much better, (earlier versions didn't do any of what you said very well) but now they are going to be moving away from even that.

                I do use SQL Server, and Oracle,
              • Re:MySQL? (Score:4, Insightful)

                by einhverfr (238914) <chris.travers@gmail.com> on Thursday October 25 2007, @12:37AM (#21109857) Homepage Journal
                Actually, there are several cases where you may think that MySQL has foreign keys when it doesn't. So the support of foreign keys is not entirely complete.

                If innodb is not installed, you get a MyISAM table without the foriegn key enforcement and not even a warning is given on table creation (you do get a warning when you insert, but the application is unlikely to be watching).

                CREATE TABLE table2 (
                        id int autoincrement primary key,
                        foreign_id int references table1(id),
                        test text
                ) type=innodb;

                CREATE TABLE table2 (
                      id int autoincrement primary key,
                      foreign_id int,
                      test text,
                      FOREIGN KEY foreign_id REFERENCES table1(id)
                ) type=innodb;

                In one of the above examples (won't say which one ;-) ), you don't get foreign key enforcement. No warning. just no enforcement.

                Yes, MySQL has foriegn keys. It doesn't have them 100% but it does have them.
    • Re:Very Niiiice (Score:5, Insightful)

      by Chineseyes (691744) on Wednesday October 24 2007, @12:04PM (#21101827)
      Why on earth would you compare MySQL with Access? I'm more of a Postgres guy myself but even Mysql deserves better than that.
    • Re:Very Niiiice (Score:4, Informative)

      by Shados (741919) on Wednesday October 24 2007, @12:05PM (#21101849)
      Access isn't "competing" in the same area as MySQL though, SQL Server Express is. MS Access would be more competing with SQLite i beleive (which I never used, so don't quote me, but I beleive that is a less server-centric open source DB?).

      JET (Access' database engine) is more of a data storage engine with SQL support than an RDBMS, which MySQL is (which could have been debatable until v.5 I guess, hehehe )
      • To provide a more accurate comparison, JET is probably more akin to SQLite [sqlite.org], which, BTW, is frickin' awesome.
      • Re: (Score:2, Informative)

        Access is more than just the database. It is a compact tool with little bit of reporting and application development. As a matter of fact, you can have Access connecting to other database engines via ODBC (though the performance sucks in my experience).
        • True, but it does make for fast prototyping of forms/reports you might then do in another language.
        • It is, but usually when people are comparing Access to other stuff, they refer to JET, not the MS Access application itself.
      • Re: (Score:3, Informative)

        I'd say that OpenOffice Base competes with Access. As does Filemaker Pro (do they still sell that?). Most other databases do not because they are just storage engines, and don't really offer much in terms of a user interface for creating data entry forms, or displaying reports.
      • Re:Very Niiiice (Score:4, Informative)

        by david.given (6740) <dg@cowlarkPOLLOCK.com minus painter> on Wednesday October 24 2007, @04:21PM (#21105417) Homepage Journal

        ...SQLite i beleive (which I never used, so don't quote me, but I beleive that is a less server-centric open source DB?).

        It's a non-server public domain database library. Yes, really public domain. Its databases live in files and there's no server component whatsoever; it's intended for use by a single application (although it supports file locking so that multiple processes can access the same database).

        I use it in one of my apps. It's awesome. It's tiny (about 300kB), it's simple (no messing about with starting servers), it's blazing fast (for some tasks, it's up to an order of magnitude faster than PostgreSQL or MySQL --- for others, it's slower, though: benchmarks [sqlite.org]). More and more programs are starting to use it simply as a document store. It's great.

        If you find yourself wanting to use SQL in a situation where only a small number of apps at a time are going to want access, or even if you just want to teach yourself SQL (it's got an excellent command line shell), do check it out.