Google Releases MySQL Enhancements
An anonymous reader noted that "Google has released its internally developed enhancements to MySQL to the open source community this week. Changes include improvements in replication, high availability configuration, and performance." It'll be interesting to see if the changes they made are of interest to other places using MySQL.
Did they fix that thing where it always sacrifices data integrity for speed?
(I'm not even trolling, I do want to know if they fixed that)
sic transit gloria mundi
Those Googlians are stupid, don't they read slashdot? If they did they'd know MySQL isn't fit for ANYTHING! Sheesh.
No, all hail MySQL.
I'm a recent convert from SQL Server, and I love MySQL now.
The fact that I can download a copy and get it running in about 20 minutes is the best part. The fact that the admin is pretty damn good, and easy, is the part that keeps me using it.
Maybe there IS something to this whole open-source thing.
No reason to lie.
Ah, now this is how it's supposed to work. No bull like, "We're releasing improvements as MSN-SQL," or any other nonsense. Yay Google.
Always someone has power over you. The thing to consider is this: Is the power good, or bad?
MySQL is dual licensed so if they add this code they can't sell their product under another license..
Wiki for the patch here: http://code.google.com/p/google-mysql-tools/wiki/M ysql4Patches
df -h
At least with the GPL, anyway. You have a company like MySQL which actually makes a product, rather than bundling and providing services as the majority of the business. However because they can't exclusively control the app, they can't make a large amount of money except on other services and such. Then a company like Google comes in, with tons of resources, and makes great modifications to your code. The only problem is that you can't merge them into the commercial distribution without their permission. What's ironic about this is that being dual-licensed, the code would remain free for everyone to use under the GPL.
MySQL chose this approach, but I could see how this might make others less inclined to dual-license under the GPL.
Did they fix that thing where it always sacrifices data integrity for speed?
It's a silly question, really. MySQL is about performance. If you can trade off integrity for speed, and you need speed, use MySQL with myASM tables. If you need that integrity and would benefit from MVCC use PostgreSQL. If you need MySQL for some reason (web hoster, etc) and want the integrity, use InnoDB tables (for version 5 - something else for version 6), though there's a performance hit and you still don't get MVCC.
My God, it's Full of Source!
OUTSIDE_IP=$(dig +short my.ip @outsideip.net)
I wouldn't be so sure: the mysql administrator is not always able to restore a backup correctly. you are well advised to restore backups through the command line. it is also impossible (at least last time I checked) to automatically include all databases in a scheduled backup. You can only select the databases that are present at the time you schedule the backup.
furthermore, the mysql query browser screws up when you paste a query containing tabs. this particular bug was reported to mysql over a year ago. it was somewhat fixed, but not really.
I really like mysql but claiming that the admin is better than sql server is well, pushing it.
Apparently something has changed in Google's usage of MySQL. They have this to say for their patch:
"In a perfect world, each feature would be provided as a separate patch and all code would be as portable as MySQL. We are not there yet. These have been implemented and deployed on Linux. Also, some of these features only work with InnoDB, because we use InnoDB."
InnoDB is the slower, but safer/transaction-able way to use MySQL. In an earlier blog entry "let's get a real database", Google revealed they run AdWords/AdSense on MySQL, and they rolled up their own transactions as they went for speed with MySQL. Now we see they changed their mind.
So I suppose that goes to show, never mind how limited your application, you better stay away from MyISAM: it'll bite you sooner or later.
Nevermind - found the Wiki with more info...t
http://code.google.com/p/google-mysql-tools/w/lis
(Snicker.) In the building where I work, there are special supply cabinets for nomadic employees who use the flex offices. These have signs on them saying "These supplies are for flexible employees only!" Every time I see one, I want to add an addendum: "Inflexible employees fuck off!"
I don't want to get all niggly...
But I didn't claim that MySQL admin was better than SQL Server admin- I just said it was damn good.
I have had much better success with backup and restore on MySQL than I have had on SQL Server. I find the interface and functionality much easier to understand and much more obvious. The damn DTS in SQL Server is a black hole to me...admittedly I had a database replicate in the wrong direction about 4 years ago and I am still gun-shy when using it. Yes, it was my fault, but MySQL lays things out a little more clearly.
No reason to lie.
I call shill. I used Sql Server 2K and 2K5 at my last job, and I would LOVE to have SQL Server Studio for MySql - the admin tools SUCK. The ones that use the native dll crash, and the ones that use .Net bindinds (i.e. Toad from Quest) have bugs of their own, and crash every once in awhile too. Also, none of them hold a candle to the usability of SQL Server Studio - executing part of a script, and wanting to cut and paste the result to show what I got (standard practice here) is difficult in MySql's tools (even third party ones), but SQL Server makes it easy.
. Define sqrt(x) as something really evil like (x / rand()), and bury it deep. Watch your coworkers go nuts.
What good is speed without data integrity? If I can't trust my data, It doesn't matter how fast I can retrieve it.
If you have a read-only situation there's no need for full ACID compliance. I've seen some contrivances where MySQL reads happen from myASM databases, and the writes go into an InnoDB database, and something on the backend happens to replicates the changes into the 'read-only' databases reliably. I've just never had, myself, an application so speed critical that it was worth doing that instead of doing PostgreSQL for everything. But my use cases aren't everybody's use cases.
My God, it's Full of Source!
OUTSIDE_IP=$(dig +short my.ip @outsideip.net)
Whilst the link escapes me there is a set of admin tools for MySQL that are almost identical to the 2k5 ones for MSSQL. Truth be told it doesn't look as flash, but they are still really nice to use. The one installed on my laptop (hence not being able to remember the name) allows for highlight execution of part of script a-la the SQL Studio and cut and pastes fine, I'm sure there is more than one tool out there that can do this!
I use both MS SQL and MySQL in corporate environments for various purposes and have to say that I like both for different reasons. MySQL is "damned good" in its own right, but there are some ANSI features available in MSSQL I really have trouble living without (for example: DELETE FROM tblData WHERE fldValue = '3' OUTPUT INTO tblBackup). My thought would be to see what Google have to offer, if it helps me, then great, if it doesn't, it's great for the community, and in a few years time when MySQL has all the features I require I can finally throw out the MS SQL servers.
My $0.02 AU
Me failed English...
FreeBSD over Linux. If my comments seem odd, this may explain...
Because the replication support in MySQL is very basic. A single master for the whole database, isn't that a bit limited? I had to run two database processes just because I had two data sources to replicate from.
Unfortunately, the patches from Google don't really fix the basic problem. I think MySQL needs a complete redesign of the replication function. Oracle seems to handle this much better: the replication is controlled on the master, not the client, and it works in just about any combination you can imagine. That is not to say that the MySQL replication is not useful in certain situations (it fans better), but it is very much limited to one kind of application.
Way to go.
In this context, data integrity refers to mechanisms that prevent you from doing something bad. If you never do anything bad, these mechanisms aren't strictly necessary. It's analogous to the difference between dynamically and statically typed program languages.
What do I mean by "something bad"? Without referential integrity, you could have the database equivalent of dangling pointers. Without concurrency controls (either through locking or the previously mentioned MVCC), one user could accidentally blow away another's changes. (Look up isolation levels for some specific examples.) Without transactions, a failed update could leave the database in an inconsistent state (e.g., the money left your savings account, but never made it to your checking account).
Gee, thanks. What about us jack-of-all-trade schmoes who only use the basics and aren't running company wide databases? The amount of data I use the database for is actually quite small, relatively speaking. I run (among all my other jobs) our internal webserver, which means I need to write all the code, including the presentation part, and administer the database.
Sorry, we can't all be gurus, but I still need to back up my tables every so often.
Stupid sexy Flanders.
The survey ``asked developers at 517 companies in its 2006 winter survey what database they developed with'' with developers allowed to give multiple answers. It isn't clear to me why Oracle was split between two versions while none of the other databases were.
[blatant selfpromotion] if you're looking for something similar (but with much less functionality) written as a dos batch script, try this http://www.jijenik.com/projects/mysqlbackup/. It will even email you an compressed and encrypted copy of the backup file. [/blatant selfpromotion]
Because it's a hell of a lot more fun than using a mouse trap and the mouse is just as dead.
Show me one programmer who hasn't done something 'bad' (i.e., made a mistake) and I'll say, "Just let him write his second line of code," just after I pry the delete, backspace and ctrl keys off his keyboard.
Yeah, right.
Well said, not everyone can be the guru of everything. This macho geek attitude of 'If you cant do it in this super efficient, optimal way, you have no business doing it' is very detrimental to the OSS community. I am a software engineer, but I do basic admin stuff too, there are admins in my company who are obviously better than me.. but that doesn't mean that I cant take care of some of the duties too. I dont have to be supremely competent.. just competent enough.
- Tempestdata
You can use the SQL Server Profiler tool to capture the SQL that's run when you do something in Enterprise Manager. I've done this when I wanted to do something in my own admin tools that I know can be done in EM.
Run and catch, run and catch, the lamb is caught in the blackberry patch.
Yeah, but the setup time and learning curve is atrocious, and you run the risk of shooting your own foot off.
BigMan, If you're coming from SQL Server, you'd be better off downloading and using Postgres 8.2.4 for windows, from here. PG is BSD licensed, which means you can bundle it with your commercial .NET-based apps for free.
The management interface for PG is on-par with SQL Server Studio; I use both on a daily basis. It's also "20 minutes to set up and start populating data". As an added plus, Postgres has all of the "standard" syntax and referential data integrity turned on out of the box.
You use MySQL if: a) you're developing a LAMP app for an inexpensive webhost that only allows MySQL databases, or b) all of your developers cut their teeth on MySQL and therefore productivity will drop if you ask them to use standard compliant syntax, or c) You're using an app (like SugarCRM or WordPress), the developers of which insisted on using funky MySQL-only features (instead of standard portable syntax) and therefore it's too much work to port to a standard syntax.
In all other cases, you use Postgres or some other commercial database. Postgres scales much better than InnoDB on any combination of a) larger numbers of read-write transactions, b) larger numbers of connections, c) more processors, d) larger datasets (including and beyond 400-500GB).
Cheers, -J
I dont have to be supremely competent.. just competent enough.
I agree in general, because I'm in the same situation, being "Administrator of Computer Stuff". But come on, folks. Being an expert in mysql is one thing, but understanding how to write a shell script or use a simple command-line utility like mysqldump is pretty basic stuff that even "master of none" types like me are comfortable with.
There is a lot of reflexive elitism and egotism among techies, but if someone doesn't have a foundation of basic "linux literacy", telling them not to meddle with important systems is often warranted. I think people who consider themselves computer-savvy can sometimes get defensive when their knowledge about a particular topic is shown to be lacking because they feel it's a reflection on their overall "geek cred". So they point out all the other technologies they're competent in as though that somehow mitigates their lack of knowledge in this one. This, too, is a kind of "macho geek attitude", in that people will refuse to admit that they're n00bs and need to spend a lot of time learning before they can use a new technology.
When I come up against something I don't know how to do well, I spend my energy trying to learn how to do it better, not vehemently asserting why I don't need to.
What part of fun don't you understand?