MySQL to Counter Oracle's Purchase of InnoDB
Miff writes "Computerworld is reporting that MySQL is hoping to counter Oracle's acquisition of InnoDB by providing its customers with an alternative." From the article: "Axmark said the storage engine is 'pluggable,' meaning other storage engines can be substituted instead. He said the code for InnoDB is under the GPL (General Public License), so 'the code is always out there. It will always be out there.'"
I think there's hope for MySQL. With Oracle's products becoming more affordable and the recent purchase of InnoDB it looks bad for MySQL but I think this could be there chance to become more independant of other companies.
I think this could be the big push that they needed to seriously consider teaming up with the Postgres guys, which could be good news for everyone interested.
SonicNonsense.com - Random stuff from a bunch of random people.
So, I'm not an expert on the GPL, but it sounds like we're looking at a fork? Where the OSS community gets to continue to use a public GPL`ed version, and Oracle will develop what they bought? I wouldn't think that Oracle would undermine MySql OS'ness, but the article said without a continuance of their license Mysql Development could slow down, or be setback. Maybe someone can explaint the highlights of the GPL that apply here?
There are other differences. Setup and configuration of MySql is much simpler, and you don't have to go as crazy creating complex partition schemes on your hard disks to get decent performance. But again, that's as it should be -- for simpler projects you want the free alternative.
--
Free 411! 1-800-411-SAVE
Free Conference Call -- No Spam, High Quality
This may not be about the GPL, but rather about patents. Reading the article:
"if Oracle holds patents or licenses for the underlying technology such as algorithms or file structures, "then that could get quite interesting,"
It always seemed lame to me that MySQL users had to concern themselves with with "storage engine" gets used under the covers. The obvious answer from MySQL's perspective is to build their own storage engine as an integrated part of MySQL.
Does anyone know the practical difference in using other storage engines? For example, how does using Berkeley DB (http://dev.mysql.com/doc/refman/5.0/en/bdb-storag e-engine.html) compare?
Also, how typical are non-InnoDB configurations of MySQL?
Microsoft wants to knife the baby, OSS projects do fork (though not as often as Microsoft would have you believe), and Slashdot postings invariably have spoon(erism)s. In that case, to produce good, clean technology, all we have to do is build a dishwasher the size of California.
It's a small world and it smells funny; I'd buy another if it wasn't for the money; Take back what I paid (SoM)
MySQL does not provide a transaction-safe store free of licensing overhead. Commercial licensing of BDB, SAP-DB, and InnoDB all require relicensing agreements.
These being availble for use under the GPL and similar licenses helps out everyone who uses MySQL under the GPL. But it doesn't help anyone else out, including MySQL. What MySQL needs is the ability to add something like MVCC to a table type that they own. Oh wait that will never work because MyISAM should be pretty much at odds with the whole concept. I guess it is time to build one from scratch.
So the inevitable outcome is that MySQL will probably have to write a storage engine from scratch that meets all the needs that InnoDB filled.
LedgerSMB: Open source Accounting/ERP
From my readings in the relational data model and RDBMS theory, I learned that SQL is supposed to be a declarative lanuguage, which means, you tell the DBMS engine what you want done, and not how?
Then the DBMS will use the path which is most optimized for the request.
Saying that a certain engine is optimized for some types of task, goes against the theory of relational databases, a DBMS can and should be everything for everyone.
So, the fact that MySql is better for some tasks than Oracle, is a flaw in both engines, and supposedly one that both are working to fix.
Just to give an example, since the user, doesn't see where and how his data is stored, Oracle for example, can use MySql's engine internally, when it detect situations for which MySql's engine is optimized, and switch to Oracle's engine, when the situation change, all hidden from the user, of course this is all in theory. It can be factually impossible to implement such a thing.
Isn't half implemented for the better part of a half decade like rest of the MySQL stack. I give the swedes kudos for finally becoming a real database with version 5 (they only became a half assed database in 2003 with InnoDb). Finally we have stored procedures, and XA transactions, and the migration to 5 from 4.1.xx doesn't seem to be as hellacious as 3.xx to 4.xx (we're fighting fedora core's default build of 3.xx right now) But I guess who really wants transactions any way?
if sign.nil? Sig.new
Oracle has never been in the business of providing affordable technology. I doubt that this "coming affordable" that you mention is something they are doing by choice. However, if Oracle can find a sneaky way to stop the competition ... perhaps they will be able to stop this process of becoming more affordable. Then, Larry Ellison can get back to having so much extra cash that he feels like a God!
Didn't Oracle just release a free version of their database technology?
My Sysadmin Blog
Yes. Do you really believe that they did this out of the goodness of their hearts?
No commercial vendor will do anything unless they believe it will make them money in the long run. Period, end of story. Oracle wants you to use their products for everything. Easiest way to achieve that, with MySQL and PostgreSQL out there for free? Give away a low end product. Let people tinker at no charge. Start charging them when they need the more powerful product.
Hook 'em early, and slug 'em when they're hooked. It works at pretty much every level. Oracle is moving along a very well worn path. How well it will work, remains to be seen.
I ran into an annoying situation just yesterday trying to modify some code that 'depended' on mysql. I wanted to know WHEN a record was made in a certain table..
Quick and dirty solution was to add a column with the default value of CURRENT_DATE().. Too bad that didn't work. There is even an entry in the mysql bug database about it that date back years..
http://bugs.mysql.com/bug.php?id=1696
http://bugs.mysql.com/bug.php?id=2040
More retarded is that the lovely people on the mysql dev team have those classified as 'feature requests'.. Its not a feature request, its just another fundamental aspect of mysql that is missing and the type of attitude the mysql team has for missing features is just laughable(anyone remember reading the old mysql docs that talk about how useless transactions are and that you would never need them?)
I had to spend 3 hours(no joke) dissecting the code to have it insert the current date into the record I wanted, 3 hours I will never get back.
Thats just typical of every encounter I have had with mysql.. some annoying stupid feature I take for granted just isn't there.
With Oracle's purchase of Inno-DB and their recent release of a free version of their database software, it looks like a war will be shaping up over the low end of the database market.
Besides for being open-source, what advantages do PostgreSQL and MySQL have over Oracles' 10g Express, Microsoft's SQL Server 2005 Express, and IBM's proposed DB2 Express?
My Sysadmin Blog
MyFireGreSQL.
Maybe you should have spent the 3 hours on reading the docs, because one of the features of MySQL (prior to 4.1) is that the FIRST timestamp column of any record is automatically updated to the current date/time whenever you change (insert/update/replace) a record. This default behaviour has changed since MySQL 4.1, now you can specify if you still wish to use this behaviour or not, or if you want another TIMESTAMP to change : http://dev.mysql.com/doc/refman/5.0/en/timestamp-4 -1.html
I've often wondered about this as a general matter. That is the value of the GPL, as a practical matter, if somebody else buys the brains? I'm not asking to be antagonistic; I honestly don't know.
I've read that various GPL, LGPL and open source projects are heavily supported by corporations who employ the hackers who do the majority of the work, and the vast majority of the hard work. Stuff that other people aren't capable of doing and/or don't have the time to do. How vulnerable are various projects to somebody buying the brains?
Only Women Bleed (Sex, Sharia remix)
sure will be absorbed by Oracle. Mark my words!
Scott McNealy to Michael: "Suck my Sun!" Michael Dell to Scott : "Lick my Dell!"
In case you didn't know, Oracle are now offering a free version of 10g: Oracle Database 10g Express Edition
From experiments with my database-like system in Java (http://sw.deri.org/2004/06/yars/yars.html), I learned the hard way that the indexing/storage component is the key piece for any system dealing with large amounts of data. Performance depends to a great extent to the underlying storage mechanisms used (and different implementations of e.g. B+-Trees vary greatly in performance and functionality). Implementing a fast B+-Tree with transactions is a non-trivial task.
Let's hope MySQL AB. find a good replacement for InnoDB.
When many people started using MySQL over other choices, the landscape was quite different.
* PostgreSQL wasn't available in a native version on Windows and their developers were still mastering the codebase they inherited (they mastered it around 7.3, before that they tiptoed around making massive changes).
* Firebird wasn't open sourced yet (before summer 2000).
* and SQLite wasn't released either (before summer 2000).
The above 3 conditions are no longer valid.
Many of us use MySQL because so many other software packages are already designed to work with it. Like Windows, it doesn't matter even if better alternatives exist because this one reason alone is most compelling if the software is "good enough".
In other words, the original technical reasons for choosing MySQL over others has been replaced by a compelling new reason: the same reason many people use Microsoft Windows today.
In a nutshell:
* If I want a super fastest lookup table without SQL, I'll use something like cdb or tinycdb.
* If I want a fast and simple database requiring only a tiny subset of SQL, I'll use something like SQLite.
* If I want a modern, full-featured, and free rdbms/ordbms, then I'll use PostgreSQL.
* If I want compatibility with most 3rd-party software, then I'll use MySQL.
I did a brief google, but nothing definitive came up... Someone who knows more about it, or has more time might have more luck.
My Karma: ran over your Dogma
StrawberryFrog
Different kind of free. You do know there's more than one kind of free, don't you?
Anyway, Oracle XE is actually pretty nice, particularly if you want to throw together a quick web-based app. I wish I could put something together with PostgreSQL/PHP (or whatever) as quickly as I could with Oracle's web forms designer.
GPL prevents redistribution, not use. Companies only need to buy the commercial MySQL license if they want to distribute closed source programs. Internal usage doesn't care a whit.
Infuriate left and right
He said the code for InnoDB is under the GPL (General Public License), so 'the code is always out there. It will always be out there.'
That's true enough, and yet MySQL uses GPL for its free Linux version but a different licence for the Windows version, don't they? They can't just pick up InnoDB and roll it into their Windows release because they don't hold the copyright to be able to release Windows InnoDB under their Windows licence. So, if Oracle kills InnoDB (or starts increasing the price for non-GPL releases) MySQL might have to revisit its business model.
I always liked PostgreSQL better anyways.
Laissez lire, et laissez danser; ces deux amusements ne feront jamais de mal au monde. - Voltaire
Oracle has a *free* database now (in beta last I heard, but you can DL it). Oracle 10g Express (XE) edition. Still not GPL free, but at least $$$ free :)
e /xe/index.html
http://www.oracle.com/technology/products/databas
Same codebase as the big daddy but with a few limitations (like you can't store 10TB of data in it, etc..)
It's not even freeware, it's crippleware.
I tend to use NULL to mean that I know that there is no value. Setting a field so that it allows NULL is like saying "not all things of this type have this property". Setting a field NOT NULL says that all things of this type DO or MUST have this property.
:-(
;-) Yes, that means you cannot concat a value you know not to exist with a value that does exist because you don't know what the result will be.unknown as well.
But you have a problem doing this because your comparison sematics don't work for the meaning you are attributing to NULL. NULL tends to be used this way though and unfortunately it is an accepted practice
The problem comes from the following issue: What do the following expressions evaluate to?
NULL NULL
NULL = NULL
NULL IS TRUE
NULL IS FALSE
first_name || ' ' || NULL (|| being the ISO SQL concat operator)
In all the above areas, the expressions evaluate to NULL. After all when you compare UNKNOWN to anything, the answer is always UNKNOWN
LedgerSMB: Open source Accounting/ERP
In a purely mathematical sense, Date is correct in that NULLs don't fit into the math model of relational algebra terribly well. They are also overused which creates a tendency to have ambiguities in the interpretation of data (example: have a wage column for hourly earners and a salary column for salary earners. Does a NULL mean that you don't know the hourly wage or that the person doesn't have one?). But this is largely a db design issue and not an inherent issue with NULLs per se.
:-)
The problem exists when you are gathering real-world information and you know how this information is supposed to fit together. You may be missing pieces of that information at any given point. So what do you do? You use a special, reserved value to indicate "unknown at present time" which is exactly what a NULL should be used for.
For example, someone calls me for technical support. They are in a hurry so I gather telephone number, email address, and billing address. Lets say there is more information I need about this contact for my relational model but I forget to gather it at this time (lets say, zip code). So I store it as a NULL, and then I go to Google Maps, look up the zip code, and fill it in later
LedgerSMB: Open source Accounting/ERP
If you do not use NULL, what do you put in say the maidden name of a man?
I think that it makes more sense to use a null value than an empty string.
Thanks Mr. Coward. Oracle has a tradition of giving product away to students and developers as well. The goal of this goodness was to corral companies into buying Oracle. They are extremely aggressive at getting money out of your company once you bite the hook.
Linux, Apache, PostgreSQL, Perl or PHP.
:-)
As rugged as a Lapp. All the better because Linus is a Finn and Lapps and Finns are closely related
LedgerSMB: Open source Accounting/ERP
The slashdot effect !
1. Slashdot supports Netscape corporation against Microsoft in the Broswer Market
2. Bang!
3. Slashdot suppports MySQL, and runs it's site on it.
4. Bang!
Ha! ha! Ha!
Both
0 NULL
is false.
Wrong. These both evaluate to NULL, not false. After all, you can't tell me that you know if an unknown integer or float is greater, less, or equal to 0, right?
With NULL's all your logic is trinary:
TRUE, FALSE, or NULL.
TRUE OR NULL is TRUE (there is no value in place of NULL to make this false)
FALSE OR NULL is NULL (depending on what you put in place of NULL this could be true or false)
FALSE OR FALSE is FALSE (obviously)
NULL is used to create an assumption of the limitation of our knowledge.
LedgerSMB: Open source Accounting/ERP
Connection speed and non-transactional ?
Maybe for a small site.
Try MyISAM or InnoDB.
Now create a table with 30 fields:
userid : int, dataid : int, subdataid: int, someparam : int, a bunch of varchar(30), varchar(255), with 3 of them as FULL TEXT with index.
Create an index for any where clause field.
Now take this table, insert 1...50000 rows with incremental data and some field being identical.
Now create 10000+ rows with the same userid, and a mixture of dataid/subdataid, being equals, like this, (1,1,1), (1,1,2)...(1,1,1000),(1,2,1)...(1,2,1000)... you get the idea.
Make sure, the RAW DB file is at least 50 MB.
Now do 6 queries that looks like this:
select * from test where userid=1
and somevarchar likes 'test%'
and somevarchar2 likes 'foo%'
and someid > 10;
and let it crawl.
HTML page load time 30 seconds and up.
MySQL is great for small sites, but it doesn't scale up.
We encountered this problem on our LAMP server, when we added a *busy* site to our framework and the busy site was producing 10,000 hits per day... We had to move the site to a new server... with PostgreSQL.
BTW, I did some similar test with Oracle10g and PostgreSQL 8.1, I couldn't see much difference apart that Oracle seems to create indexes by itself and it cost 45K$ per processor, unless you buy a Dell/Oracle server blade deal.
You can try Oracle10g from http://otn.oracle.com/
The only fact that I will agree with you is:
MySQL Cluster seems to rocks [never test it myself],
but our friend Google seems to be using it a lot.
Of course, if your website has less than 1000 hits per month, like almost everyone here, there's no point between MySQL/PostgreSQL, use whatever you want.
MySQL is hardly a disruptive technology. Disruption implies "radically different". I question whether another RDBMS that happens to cost less and can be tinkered with is truly disruptive.
And let's be clear. MySQL's database revenues were 0.01% of Oracle's in 2005 based on the Gartner and IDC surveys. Oracle makes in 12 hours what MySQL takes a year to make. And Oracle's growth is not shrinking at the expense of MySQL, not according to any statistics YET anyway. Perhaps it will happen, but a number of OSS advocates are claiming advancements that are 3 to 5 years away.
-Stu
Oracle is a monolithic beast which requires constant care and feeding by experts who have been so steeped in its ways that they are prohibitively expensive.
I know multi-terabyte Oracle DBMS' that run the entire billing and customer systems for some major telecommunication companies are basically run by 2 or 3 people, and they also have a couple dozen minor multi-gigabyte databases to support.
Oracle requires very little care and feeding. It does have a lot of knobs available for twiddling if you need to tune it, but if you're constantly twiddling them, there's usually a larger problem (the application has design problems, your hardware is inadequate, your staff is twiddle-happy, etc.)
Oracle perpetuates this situation and, as best I can tell, deliberately obfuscates their product in order to continue to rake in huge fees for training and services.
Complete bullshit. Oracle is one of the most well documented databases out there. If ppeople would just take the time to read the Concepts manual and browse Asktom.oracle.com for a day, that would skewer a lot of the "mystique" surrounding Oracle.
You don't need training or P.S. to manage a large Oracle database, you just need someone with good technical chops, the willingness and time to experiement, and the ability to learn. But that seems like the criteria for any profession.
-Stu
You said:
What VMS had was RMS, which gave you everything from unstructured files all the way through to b-tree based ISAM.
When you should have said:
What VMS has is RMS, which gives you everything from unstructured files all the way through to the b-tree based ISAM.
Of course, OpenVMS is dying. When it goes, we will bury it right next to BSD.
It isn't a BSD that can linger for ever. OpenVMS isn't open source so in the end it depends on the OS vendor's interest for development. The DoD contracts force a kind of lingering support but it is cursed with running on the EOLed Alpha and the turkey referred to as Itanium.
See my journal, I write things there
Example: With items containing a bunch of items, both SELECT * FROM items WHERE NULL > 0; and SELECT * FROM items WHERE NULL The alternative would be to make the query fail the moment a NULL was encountered in such contexts, which makes for a lot of other problems.
This tristate problem also shows up on the level of query optimizing/handling. Without NULLs, a statement can be represented by a logic tree (a NAND tree), in a canonical/normalized form, allowing comparisons of different queries, a bucnh more optimization of the code due to this, and easier understanding of what's going on.
Eivind.
Doubting the existence of evolution is like doubting the existence of China: It just shows that you're uninformed.
Can you explain why you should do this? I think its frequently the case that M keys have N distinct types of data which they define. Lets pick an example:
Key = Social Security Number
Values = First Name, Middle Name, Last Name, Date of Birth, Fathers SS#, Mother's SS#
What's the advantage in splitting this up?
I could understand if you are talking associative databases not relational but then that's a different data model.
The argument is, perhaps that field should be normalized into a separate table of visit dates which does not contain an entry for me.
I wouldn't go that far. "Last gynocologist visit" has a 1->{0,1} relationship with you (say your social). As such it should be a value in a table with that key. "All gynocologist visits" should be a seperate table.
I was going to add that if you are finding that you are using NULL's to mean "not applicable" rather than "unknown" then it is a good sign that your data model is not atomic, and that certain optional information could be broken down into other relational entities.
NULL's have uses, but they should be sparingly used. I am convinced that they always introduce ambiguity into certain query types, such as outer joins.
LedgerSMB: Open source Accounting/ERP
I think Date's view of the absence of join values is summed up in the quote he uses when discussing 6NF, from Wittgenstein: "Whereof one cannot speak, thereon one must be silent." As Date puts it, "If you use nulls, you're effectively making the database state explicitly that there's something you don't know. But if you don't know something, it's much better to say nothing." So instead of showing a value with null, you don't show the value at all. As you say, it's effectively the same as using a NULL - but Date argues it's better since it doesn't introduce the logical ambiguities of NULLs in other areas.
Maybe.... But I don't really see the *semantic* difference between the sloppy use of a NULL in DB design and the semantic ambiguities that occur from the lack of enforcement in the event where optional fields are split off without proper enforcement of business rules. And I don't see a semantic difference between the inclusion of a NULL in a field and a NULL that comes from a missing record in an outer join. The end result is the same semantically, and I would argue that, provided that you have split off MVD's properly, that the difference has very little to do with anything other than preference regarding semantic structure.
I.e. from a semantic viewpoint, whether the NULL is in the table or a product of a join, the result is semantically identical and I would argue that one can see them as mathematically equivalent. So I see the problem as one of semantic clarity rather than anything else.
LedgerSMB: Open source Accounting/ERP
The RDBMS can't make these assumptions about the data model unless we come up with at least two different types of NULL's (one to represent no value and one to represent unknown). So it is up to the DBA and the programmer to use NULL's both sparingly and consistantly so that one *can* extract the data one wants.
Note that the same ambiguity appears when using outer joins even if NULL's in data models clear cut enough. The basic problem here is that you don't know if a lack of a record means that there isn't one in the real world or that there is and you don't know about it.
LedgerSMB: Open source Accounting/ERP