MySQL "materializes" a view, but yes it does not have "Materialized Views".
For some views you can do a simple substitution, but not in all cases (for instance, SELECT * FROM A GROUP BY()). In that case you need the end result before you can execute the query.
I had little to do with the VIEW implementation, so I can't really say much about how it was designed. I am not crazy about how it works either.
I am not sure about the Windows version, but I know the Unix version is still process based. In my opinion, one of the principle advantages in this is that they can use functions which can leak/die/etc and not have to worry about it taking out the server. This is what allowed Apache to handle so many unstable languages/modules.
The problem with Views in MySQL is that they frequently materialized, aka in many queries the database chooses to generate a full table of the data and do the JOIN (and in some queries there is no way to get around that). Many other databases have had views for longer and can avoid materialization in a lot of cases.
Currently I haven't brought VIEWs back in at a user level. The closest thing we have in Drizzle we use table functions for our data dictionary (aka... information_schema) and we do not materialize there. MySQL does materialization when you look at those tables.
My goal is to bring back VIEW, but for the first generation of them avoid queries which would cause/require materialization.
Bad data? We don't insert it, we toss an error (and if we don't in some cases, it is a bug).
We purposely went after the issues in the MySQL gotchas list when we began (http://sql-info.de/mysql/).
Our DDL? Soon will be transactional. Our data dictionary is federated out to engines, so unlike MySQL in our system the engine owns the definition so you can't end up in a situation where the engine is off from the definition.
I wouldn't make the assumption that because we have a similar ancestor that we are the same at all. It would be like assuming Postgres and Ingres are the same (which they are most certainly not).
When I first started doing the rewrite I considered Postgres (and spoke to a number of the developers of it at the time). In the first year I went back and forth in my head on that decision. There would have been a lot of things that would have made PG a better starting point. By the time we reached 5.1 the MySQL codebase was junk. Postgres would have made for a good decision but there were three drawbacks.
1) Postgres is C and not C++. I find that I can write code in C++ nowadays much faster then I can in C (and it comes out just as fast, the C++ "is slow" is an archaic view).
2) Postgres is not designed to use threads. I prefer to work with threads over processes (and there is a lot of good and bad with both concepts).
3) Sun wouldn't have paid for it;)
I wouldn't consider SQLite. It is neither type safe, not concurrent. It is a great database, but it doesn't solve any of my needs. I did think about Firebird for a bit, but while I know the MySQL and Postgres codebase, I don't know the Firebird code at all.
"When it comes to Drizzle, you require the code to be under BSD; In practice this is a contributor agreement too."
We don't require contributions to be made under the BSD license, we do ask that new modules are, but that is all. From day one we have never mingled GPL and BSD headers in files. Derived work has always been derived work. We never have had as a goal for Drizzle to be embedded so copyright assignment is not required. Ask Kristian for the IRC conversation I once had with him on this topic where I explained my reasons for this (or... I'll just blog most of them up again: http://krow.livejournal.com/684329.html).
Richard's statements imply that a protocol is somehow wrapped up in licensing. In the US this is just not true (someone in another comment pointed out the Lotus Notes legal case where the FSF argued this itself ). Richard says all sort of things, but it doesn't make an ounce of them all true.
Bradley Kuhn has pointed out that while the FSF has done copyright assignment, it has promised to never assign its rights for commercial purposes. It also doesn't require sign over of all rights to a given body of code. It just asks for enough so that it can be a legal partner in the defense of the GPL should something come to court. That is very different in nature, to the code assignment that occurs when someone is assigning code to a commercial entity.
You should easily be able to find blog posts, comments, etc... from me over the years telling people exactly how far the GPL reached (this was an ongoing issue between me and others in MySQL for years, and is well known within the MySQL community).
The acquisition by Oracle, or even Sun, is not what matters. What matters is the state of the community, etc where this belief is still perpetuated. I found at SCALE that this was a topic that was still being discussed, and that there was a lot of confusion around it.
Which is why I blogged about it:)
I would also not go as far as saying all of the MySQL principals (or even the senior executives for that matter). Sit down sometime with David and I believe you might find a different answer.
My article sounds like something Monty would publish? I don't think so, Monty is a firm believer that the GPL does influence the protocol (aka, you can have a GPL based protocol). If you would bother to read some of the published material around what was said for the benefit of the EU you would know that. Quite a bit of his argument to the EU is based on the belief that the protocol follows GPL.
Drizzle? Monty has nothing to do with Drizzle. He has never committed a line of code, and I doubt he has even looked at it. MariaDB, the databases he works on, is very different. The two are nothing alike other then sharing a common ancestor.
Once again Bruce, read up a bit, and get your facts straight.
I agree with you that it should be based on choice rather the be forced. What I am most interested in is providing solid reasons why it is in a companies best interest to contribute.
I would rather offer a carrot, and just skip the stick.
That was never my decision, though I have advocated it.
It is hard to say what the right solution is. I find it sad to see how in some bsd projects few of the vendors who make use of the software participate in improving the base software. On the same token having a monopoly on source changes seems to also stifle innovation.
I believe we have yet to achieve the propper balance that will eventually be required.
So I will repeat myself one more time, you are free to do what you want with what you write.
I said nothing about what Oracle or Sun should do. I have pointed out that the dual license model is a viable business model.
What I have said is Richard has squandered an opportunity to address larger questions that exist for free/open source to support a model that is contrary to the promotion of additional open source software.
I see that you are trying to make some point, but I believe you are doing it at the expense of reading what I am writing.
Can I suggest you clearly write out the point you are trying to make? Giving you the benefit of doubt, I assume you have some other point you want to make beyond "the dual source model can make you money".
I am not sure where in histrory you will find that I have ever advocated for dual licence, since it is well known that I do not for work which I personally do (aka if you check you will find that I lean toward BSD).
Also, I believe people are free to do whatever they like with what they produce. No company doing original work should feel that they have to open source it.
What I object to is Richard's comments which I find counter to the notion at what is at the center of notion of the gpl. I seem to remember the fsf suggesting once that developers assign copyright to them to block dual license strategies. Richard's current statement seems at odds with this.
You are welcome to do whatever you like with whatever you write Bruce, but I wouldn't suggest that other developers contribute their work to you, just so that you can change the license and make a buck off them.
Btw I assume you are referring to the non-sense that gpl follows protocol. Notice that with drizzle we have bsd drivers, and that many others drivers exist that are not gpl. The concept that gpl infects via protocol is absurd.
Please note that I say nothing about the effectiveness of dual licensing as a business model. Pay-day loans exist as a business model, but I do not find that they are healthy for the communities that they exist in.
Richard is choosing to ignore the overall health of community interaction in order to favor a business model that is in direct conflict with "free software". This is what I find to be sad in his actions.
The fact that he is squandering his opportunity to further the cause of free/open source is shameful.
-Brian
Btw I originally replied to the wrong comment from you , hence this post. The iPhone is not the greatest interface to slashdot:)
Perl, php, python, postgres, memcached, and many others have copyrights which are shared among multiple copyright owners. Apache is in the same boat (Rasmus continues to not sign over his rights). Mysql itself, do to Oracle owning Innodb, is in part owned Oracle as well as Sun.
Please note that I say nothing about the effectiveness of dual licensing as a business model. Pay-day loans exist as a business model, but I do not find that they are healthy for the communities that they exist in.
Richard is choosing to ignore the overall health of community interaction in order to favor a business model that is in direct conflict with "free software". This is what I find to be sad in his actions.
The fact that he is squandering his opportunity to further the cause of free/open source is shameful.
When we forked for Drizzle we rewrote all of the client code so that it could go under the BSD. So for Drizzle clients only need to link against libdrizzle.
In the MySQL world? There are several public domain/LGPL/BSD client libraries out there. If you are stuck on the GPL it is just because you have not looked around.
The Developer's who are working on the Drizzle's JDBC drivers are licensing these under the BSD license. I am expecting to see this difference go away over the next year or so (and not only for JDBC, but for all drivers). My personal opinion is that developers shouldn't have to get into license debates every time they go to integrate open source code.
We are talking about finding a way to allow him to pull Drizzle code back into his tree. It is not a simple task though... Drizzle has been cleaned up since the fork (warnings removed, moved on to more of a C++ design, use of stdint, etc...), so he has to clean up his own tree as well before this can happen.
We typically call Drizzle a fork, since we do have a common ancestor at this point (though it is doubtful you could apply a patch between the two). We are pretty up front about this though. Drizzle is supported by Sun which the article does not mention, though we are different in that we have patches that have to date come in from 30+ companies.
OurSQL is more of a distribution then anything else. Their tree is a collection of patches they apply at each release.
There are a lot of misconceptions around the BSD license. One is that you can change the license. You can put new code you write under a different license, but the original BSD license must be kept for the code that came under that license.
What BSD does is that it allows you make use of the code with a minimal set of restrictions going forward. Personally I like the license and use it all the time.
As far as the client license goes, while the client code shipped with MySQL is GPL, Redhat distributes a public domain version of a client library for MySQL. In my opinion, license follows code, not protocols.
If you look around there are couple of articles that quote David on why he is leaving. It is perfectly amicable, he just dislikes paperwork and would prefer to not deal with it.
We are still working on the first version of Drizzle. While folks are using it, I don't really recommend it at this point. When we feel like it is ready for adoption we will publicly start recommending it.
A good number of the people who write databases use Jim Gray's book (aka the black book) as the "way to build a database". It is a great read, but I do not believe that in the face of change that the basic design needs to stay the same any longer.
Look at later interviews with Jim and I believe you will find that he too had noticed that the basic design around B-trees really would not cut it for the hardware we see being shipped today.
Hi!
MySQL "materializes" a view, but yes it does not have "Materialized Views".
For some views you can do a simple substitution, but not in all cases (for instance, SELECT * FROM A GROUP BY()). In that case you need the end result before you can execute the query.
I had little to do with the VIEW implementation, so I can't really say much about how it was designed. I am not crazy about how it works either.
Cheers,
-Brian
Hi!
I am not sure about the Windows version, but I know the Unix version is still process based. In my opinion, one of the principle advantages in this is that they can use functions which can leak/die/etc and not have to worry about it taking out the server. This is what allowed Apache to handle so many unstable languages/modules.
The problem with Views in MySQL is that they frequently materialized, aka in many queries the database chooses to generate a full table of the data and do the JOIN (and in some queries there is no way to get around that). Many other databases have had views for longer and can avoid materialization in a lot of cases.
Currently I haven't brought VIEWs back in at a user level. The closest thing we have in Drizzle we use table functions for our data dictionary (aka... information_schema) and we do not materialize there. MySQL does materialization when you look at those tables.
My goal is to bring back VIEW, but for the first generation of them avoid queries which would cause/require materialization.
Cheers,
-Brian
Hi!
Drizzle is transactional by default.
Bad data? We don't insert it, we toss an error (and if we don't in some cases, it is a bug).
We purposely went after the issues in the MySQL gotchas list when we began (http://sql-info.de/mysql/).
Our DDL? Soon will be transactional. Our data dictionary is federated out to engines, so unlike MySQL in our system the engine owns the definition so you can't end up in a situation where the engine is off from the definition.
I wouldn't make the assumption that because we have a similar ancestor that we are the same at all. It would be like assuming Postgres and Ingres are the same (which they are most certainly not).
When I first started doing the rewrite I considered Postgres (and spoke to a number of the developers of it at the time). In the first year I went back and forth in my head on that decision. There would have been a lot of things that would have made PG a better starting point. By the time we reached 5.1 the MySQL codebase was junk. Postgres would have made for a good decision but there were three drawbacks.
1) Postgres is C and not C++. I find that I can write code in C++ nowadays much faster then I can in C (and it comes out just as fast, the C++ "is slow" is an archaic view).
2) Postgres is not designed to use threads. I prefer to work with threads over processes (and there is a lot of good and bad with both concepts).
3) Sun wouldn't have paid for it ;)
I wouldn't consider SQLite. It is neither type safe, not concurrent. It is a great database, but it doesn't solve any of my needs. I did think about Firebird for a bit, but while I know the MySQL and Postgres codebase, I don't know the Firebird code at all.
Cheers,
-Brian
Hi!
"When it comes to Drizzle, you require the code to be under BSD; In practice this is a contributor agreement too."
We don't require contributions to be made under the BSD license, we do ask that new modules are, but that is all. From day one we have never mingled GPL and BSD headers in files. Derived work has always been derived work. We never have had as a goal for Drizzle to be embedded so copyright assignment is not required. Ask Kristian for the IRC conversation I once had with him on this topic where I explained my reasons for this (or... I'll just blog most of them up again: http://krow.livejournal.com/684329.html).
Richard's statements imply that a protocol is somehow wrapped up in licensing. In the US this is just not true (someone in another comment pointed out the Lotus Notes legal case where the FSF argued this itself ). Richard says all sort of things, but it doesn't make an ounce of them all true.
Bradley Kuhn has pointed out that while the FSF has done copyright assignment, it has promised to never assign its rights for commercial purposes. It also doesn't require sign over of all rights to a given body of code. It just asks for enough so that it can be a legal partner in the defense of the GPL should something come to court. That is very different in nature, to the code assignment that occurs when someone is assigning code to a commercial entity.
Cheers,
-Brian
Hi!
You should easily be able to find blog posts, comments, etc... from me over the years telling people exactly how far the GPL reached (this was an ongoing issue between me and others in MySQL for years, and is well known within the MySQL community).
The acquisition by Oracle, or even Sun, is not what matters. What matters is the state of the community, etc where this belief is still perpetuated. I found at SCALE that this was a topic that was still being discussed, and that there was a lot of confusion around it.
Which is why I blogged about it :)
I would also not go as far as saying all of the MySQL principals (or even the senior executives for that matter). Sit down sometime with David and I believe you might find a different answer.
Cheers,
-Brian
Hi!
Would you please find a single "your presentation sounds really familiar" to backup anything you say?
As I have had to point out a number of times, you should spend some time reading up on a subject before you post on it.
Cheers,
-Brian
Hi!
My article sounds like something Monty would publish? I don't think so, Monty is a firm believer that the GPL does influence the protocol (aka, you can have a GPL based protocol). If you would bother to read some of the published material around what was said for the benefit of the EU you would know that. Quite a bit of his argument to the EU is based on the belief that the protocol follows GPL.
Drizzle? Monty has nothing to do with Drizzle. He has never committed a line of code, and I doubt he has even looked at it. MariaDB, the databases he works on, is very different. The two are nothing alike other then sharing a common ancestor.
Once again Bruce, read up a bit, and get your facts straight.
Cheers,
-Brian
Hi Bruce!
I don't work for Monty :)
I also don't work on MariaDB (and never have).
Please get your facts straight.
Cheers,
-Brian
I agree with you that it should be based on choice rather the be forced. What I am most interested in is providing solid reasons why it is in a companies best interest to contribute.
I would rather offer a carrot, and just skip the stick.
That was never my decision, though I have advocated it.
It is hard to say what the right solution is. I find it sad to see how in some bsd projects few of the vendors who make use of the software participate in improving the base software. On the same token having a monopoly on source changes seems to also stifle innovation.
I believe we have yet to achieve the propper balance that will eventually be required.
Hi!
So I will repeat myself one more time, you are free to do what you want with what you write.
I said nothing about what Oracle or Sun should do. I have pointed out that the dual license model is a viable business model.
What I have said is Richard has squandered an opportunity to address larger questions that exist for free/open source to support a model that is contrary to the promotion of additional open source software.
I see that you are trying to make some point, but I believe you are doing it at the expense of reading what I am writing.
Can I suggest you clearly write out the point you are trying to make? Giving you the benefit of doubt, I assume you have some other point you want to make beyond "the dual source model can make you money".
Hi!
I am not sure where in histrory you will find that I have ever advocated for dual licence, since it is well known that I do not for work which I personally do (aka if you check you will find that I lean toward BSD).
Also, I believe people are free to do whatever they like with what they produce. No company doing original work should feel that they have to open source it.
What I object to is Richard's comments which I find counter to the notion at what is at the center of notion of the gpl. I seem to remember the fsf suggesting once that developers assign copyright to them to block dual license strategies. Richard's current statement seems at odds with this.
You are welcome to do whatever you like with whatever you write Bruce, but I wouldn't suggest that other developers contribute their work to you, just so that you can change the license and make a buck off them.
Oops, wrong comment to post on.
Btw I assume you are referring to the non-sense that gpl follows protocol. Notice that with drizzle we have bsd drivers, and that many others drivers exist that are not gpl. The concept that gpl infects via protocol is absurd.
Hi Bruce!
Please note that I say nothing about the effectiveness of dual licensing as a business model. Pay-day loans exist as a business model, but I do not find that they are healthy for the communities that they exist in.
Richard is choosing to ignore the overall health of community interaction in order to favor a business model that is in direct conflict with "free software". This is what I find to be sad in his actions.
The fact that he is squandering his opportunity to further the cause of free/open source is shameful.
-Brian
Btw I originally replied to the wrong comment from you , hence this post. The iPhone is not the greatest interface to slashdot :)
Perl, php, python, postgres, memcached, and many others have copyrights which are shared among multiple copyright owners. Apache is in the same boat (Rasmus continues to not sign over his rights). Mysql itself, do to Oracle owning Innodb, is in part owned Oracle as well as Sun.
Hi Bruce!
Please note that I say nothing about the effectiveness of dual licensing as a business model. Pay-day loans exist as a business model, but I do not find that they are healthy for the communities that they exist in.
Richard is choosing to ignore the overall health of community interaction in order to favor a business model that is in direct conflict with "free software". This is what I find to be sad in his actions.
The fact that he is squandering his opportunity to further the cause of free/open source is shameful.
-Brian
Hi!
When we forked for Drizzle we rewrote all of the client code so that it could go under the BSD. So for Drizzle clients only need to link against libdrizzle.
In the MySQL world? There are several public domain/LGPL/BSD client libraries out there. If you are stuck on the GPL it is just because you have not looked around.
Cheers,
-Brian
Hi!
The Developer's who are working on the Drizzle's JDBC drivers are licensing these under the BSD license. I am expecting to see this difference go away over the next year or so (and not only for JDBC, but for all drivers). My personal opinion is that developers shouldn't have to get into license debates every time they go to integrate open source code.
Cheers,
-Brian
Hi!
We are talking about finding a way to allow him to pull Drizzle code back into his tree. It is not a simple task though... Drizzle has been cleaned up since the fork (warnings removed, moved on to more of a C++ design, use of stdint, etc...), so he has to clean up his own tree as well before this can happen.
Cheers,
-Brian
Hi!
We typically call Drizzle a fork, since we do have a common ancestor at this point (though it is doubtful you could apply a patch between the two). We are pretty up front about this though. Drizzle is supported by Sun which the article does not mention, though we are different in that we have patches that have to date come in from 30+ companies.
OurSQL is more of a distribution then anything else. Their tree is a collection of patches they apply at each release.
Cheers,
-Brian
telnet slashdot.org 80
Take a look at the headers :)
The ones in MySQL are much harder to find.
Hi!
There are a lot of misconceptions around the BSD license. One is that you can change the license. You can put new code you write under a different license, but the original BSD license must be kept for the code that came under that license.
What BSD does is that it allows you make use of the code with a minimal set of restrictions going forward. Personally I like the license and use it all the time.
As far as the client license goes, while the client code shipped with MySQL is GPL, Redhat distributes a public domain version of a client library for MySQL. In my opinion, license follows code, not protocols.
Cheers,
-Brian
If you look around there are couple of articles that quote David on why he is leaving. It is perfectly amicable, he just dislikes paperwork and would prefer to not deal with it.
-Brian
Hi!
We are still working on the first version of Drizzle. While folks are using it, I don't really recommend it at this point. When we feel like it is ready for adoption we will publicly start recommending it.
Cheers,
-Brian
Hi!
A good number of the people who write databases use Jim Gray's book (aka the black book) as the "way to build a database". It is a great read, but I do not believe that in the face of change that the basic design needs to stay the same any longer.
Look at later interviews with Jim and I believe you will find that he too had noticed that the basic design around B-trees really would not cut it for the hardware we see being shipped today.
Cheers,
-Brian