MySQL to Get Injection of Google Code 195
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."
Injection? (Score:5, Funny)
Well, except for when it involves Little Bobby Tables [xkcd.com]...
Re: (Score:2)
Re: (Score:3, Insightful)
Re: (Score:2)
* ducks *
Re:Injection? (Score:5, Insightful)
Re: (Score:2)
Re: (Score:2)
Re: (Score:2)
The fact is that the title is fairly clear. Your suggested title ("MySQL adds code from Google") would be factually wrong since the code is due to be given to MySQL, but it has not happened yet. So the articles title is far better than your
Re: (Score:2)
Re: (Score:2)
Hells yeah (Score:5, Insightful)
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)
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).
Re: (Score:2, Interesting)
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.
Ahh, the Google workaround for the GPL. Selling web-services that RUN Free Open Source Software and NOT selling software. You get to keep the really good changes to yourself. =P
Personally, I'd like to see Google put there code out there as GPL and risk having a meaningful competitor. The benefit of having some really useful software available for high school and college aged kids to learn from would be immeasurable. Also, the transparency and openness of this would be reminiscent of some of the adva
Re: (Score:2)
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.
Re: (Score:2)
The one who led the way toward a free database was HP, with their Image product, and later, their SQL version. Image had been free (as in beer) as early as 1975, which is one of the reasons HP gained so much mini-computer market share: Cheap Value-Added-Resellers and Software shops could package their custom software with a database for a reasonable price.
Win over the developers with cheap price and good tools (ahem
Re: (Score:2)
It has been commoditized for some time now, the concept of database was simply too valuable and generic to remain a franchise. Oracle especially and Microsoft more recently have realized this and are now offering their basic packages free of charge. The remaining franchises are in high end clustering and other advanced large scale data performance enhancements which only come into play in very large data centers with large and complex databases. The vast
Re: (Score:2)
Re: (Score:3, Insightful)
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
Umm No... (Score:3, Insightful)
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)
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
"Do no evil!" - Sweet (Score:2, Interesting)
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)
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
Transplant to Postgres? (Score:5, Interesting)
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)
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.
Re: (Score:2)
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
Take a look at DBI-link (Score:2)
Re: (Score:3, Interesting)
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
Re: (Score:2)
Is it the elephant man? Is it two eyes and two testicles right below it? Is it the emoticon for "Teabag"?
I just can't keep up with the internet these days.
Re: (Score:2)
wikipedia says [wikipedia.org] it's the "kitten face" emoticon.
Re: (Score:2)
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.
Re: (Score:2)
No, you prefer that the DB give you more guarantees about consistency (yes, you can get by without FK constraints), at the expense of performance. And a tenth of a second would be a *significant* performance improvement for extremely large volume sites.
Again, it very much depends on the application involved. Pick the right tool for the right job. Sometimes, that's mysql.
Re: (Score:2)
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.
Re: (Score:2)
Re: (Score:2)
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
Re: (Score:2)
Re: (Score:2)
Re: (Score:2)
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:2)
If it has a browser on one end, a database on the other and a web server in the middle, it's an n-tier application. It doesn't even matter if the database is on the same physical server, it's still an n-tier application because the browser isn't directly connecting to the database.
What you're describing is an application with an MVC architecture running as an n-tier application.
Hell, if you'd read the link you posted, you'd know that.
Re: (Score:2)
Is rudeness a badge of honor on slashdot (queue the you must be new here jokes)?
You've zoomed the focus out a level - we were talking about the application architecture and database abstraction layers. Yes, of course the web its
Re: (Score:2)
I'm not really sure, I'm new here.
Re: (Score:3, Informative)
<?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)
Re: (Score:2)
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.
Hey, now, as much as I dislike PHP I don't see that "include_once 'foo';" is that much more complicated than "#include ". Also, the "compiled language" concept is a wholly different animal. Having to run a compiler on a piece of code doesn't automatically make it more manageable. Also, I don't know of many purely interpreted languages commonly used anymore. Python compiles to bytecode upon execution (and caches that bytecode for quick startup the next time), as does PHP if you're using any of the free
Re: (Score:3, Interesting)
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
Re: (Score:2)
Re: (Score:2)
Re: (Score:2)
Applications requiring one database or another should be ancient history.
Why on earth would that be? Modern DBMSs aren't just data buckets. They're full-on application servers that happen to have a really killer storage subsystem. In the Free Software space, there's only one that's really modern in that sense, and it's not MySQL ;)
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.
That's only a problem because of MySQL's limitations, not because it maxes out MySQL's capabilities.
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.
I've never seen an automatic database abstraction layer that was worth a plugged nickel over the long haul. Other kinds--the kind where you creat
Re: (Score:2)
I'd rather have my application live in my application code, not in my database server, and treat the database as a "data bucket". Give me a good database abstraction layer that provides me with the least common denominator so that my application can run on any of the databases supported by the database abstraction layer. For me, the database choice is
Re: (Score:2)
1) The ability to mathematically define valid data in the RDBMS so your code only has to worry about security implications of data validation
2) The ability to separate out the SQL from your code so it is not generally included inline in every one of your object classes.
Pretty much every bug in software can be reduced to a data state bug or a data flow bug. Using the RDBMS properly can eliminate most or all of the former.
Re: (Score:2)
The basic issue is that RDBMS's are often used as light-weight information stores, but they are designed to be powerful math engines which can simplify application development immensely if properly used. You can do some of this using just ANSI SQL, but often you run into limitations which are best solved by using stored procedures basically as named queries.
The math engine aspects allow us to look at valid data states as
Re: (Score:2)
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
Re: (Score:2)
Do you have a way to make Postgres clustering work as well/easily as MySQL clustering?
Re: (Score:2)
Re: (Score:2)
Re: (Score:2)
Re: (Score:2)
Re: (Score:2)
Re: (Score:2)
Re: (Score:2)
This can be a sticky issue in software design (i.e. how much support for external systems to include directly in the system). However, it has been my experience that it is better, from a design perspective, to create a standard interface for communications, or use one that has already been defined (W3C Web Services [w3.org] come to mind, but other types are possible) whereby adapters [wikipedia.org] can be built to mediate and facilitate communications between pairs of systems.
Unlikely (Score:2)
But aside from that, it is unlikely that Google's code contributions go beyond general performance benefits, management of large numbers of systems, and maybe full text search.
PostgreSQL 8.3 already will have a great, mature full text search capability, is far easier to manage in large environments, and can handle more complex loads than MySQL can. So I don;t think that there is likely to be a lot of useful ideas which could be transplanted.
Finally, the arc
Re: (Score:2)
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
As a PostgreSQL guy (Score:2)
Now, contrary to your opinion, PostgreSQL is actually quite successful It is just not as visible because it has not historically been as good at the super-simple website app stuff. However, I would not trust any money-tracking applications (not even a shopping cart) to MySQL.
6.0 in 2008? (Score:4, Insightful)
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.
Re: (Score:2)
Google needs to add an SQL function (Score:5, Funny)
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
Re: (Score:2)
Re: (Score:3, Funny)
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
Good stuff coming out of google (Score:5, Interesting)
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)
Re: (Score:2, Informative)
http://en.wikipedia.org/wiki/February_30 [wikipedia.org]
Re:MySQL? (Score:5, Informative)
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: (Score:2)
PostgreSQL used to be a pain to work with. hard to use, and had somewhat interesting problems with things like restoring backups. It is now extremely robust, solid, powerful, and has great performance.
MySQL is a good database where all you need is a simple interface to try to store data and where you dont care that much if what you get out isn't exactly what you put in. This means simple CMS needs, and simple storage needs. Google would fit that profile.
How
Re: (Score:2)
Like the one you are using right now?
Re:MySQL? (Score:4, Insightful)
That a device or program isn't suited for a certain task doesn't mean it's a toy.
Re:MySQL? (Score:5, Funny)
Re: (Score:2)
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: (Score:2)
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.
you think they're storing the entire interwebs in a MySQL database? last time I checked it was used for AdWords, where exact numbers are indeed really relevant.
I have heard a lot of scary stories from the bashers but this is a new one. MySQL has trouble counting rows now?
ps: murk loar
Re: (Score:2)
Re: (Score:2)
Re: (Score:2)
You can reinvent the wheel in your code if you want, (folks do it all the time, sometimes with success, sometimes having big holes in their code) trying to check things to make up for the
Re:MySQL? (Score:5, Informative)
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)
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: (Score:2)
Re: (Score:2)
Now, all software has gotchas, but MySQL's ones are unusually severe.
I would also point out that once you have done serious work with a *real* RDBMS, you will tend to get frustrated when you have to go back to MySQL.
Re:MySQL? (Score:4, Insightful)
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
Yes, MySQL has foriegn keys. It doesn't have them 100% but it does have them.
The Reason Google Chose a Crappy Database (Score:2)
However at the time Google was evaluating versions, PostgreSQL's performance wasn't so great. It was a pain to use and develop for, and backups had a tendency of being dumped in the wrong order so the data could not properly be restored. (I have been using PostgreSQL primarily since 6.5.)
Firebird? It wasn't even around yet. Sure there was Interbase, but it was not open source.
And Google didn't n
Re:Very Niiiice (Score:5, Insightful)
Re:Very Niiiice (Score:4, Informative)
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 )
Re: (Score:2)
Re: (Score:2, Informative)
Re: (Score:2)
Re: (Score:2)
Re: (Score:2)
Access is a nice tool for experimenting with and teaching databases IMO. One of thee best things about it is the whole database is contained within one file so it can be handled like any other office suite document. Then as your needs grow you can use it as a client with a database server.
Re: (Score:3, Informative)
Re: (Score:2)
Re: (Score:2)
Re: (Score:2)
Re:Very Niiiice (Score:4, Informative)
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.
What makes you think that JET is relational? (Score:2)