You asked. Mårten answered. He even added (and answered) a question he wished had been asked, but wasn't. If you have a comment or follow-up question, please post it. Mårten will spend as much time responding to your comments as his schedule permits.
In light of comments here about PostgreSQL being superior (and F/LOSS) technology but MySQL being used because of "MCSE weenie mentality", are you, Marten Mickos, concerned about the complacency of 'good enough' technological solutions or that Free/Libre Open Source Software may never remove the entrenched market leaders?
Mårten: Not the least. There will always be fanatical supporters of various products and projects, but I would look at what real users are saying. As an example, Nortel, Alcatel and Nokia are building new mobile phone network elements that run on MySQL Cluster. That's leading edge open source technology in some of the most advanced high-availability use. Or take YouTube or some of the other new web successes - they are scaling incredibly fast and again it is open source that powers them (MySQL, to be specific).
It is a common misperception that advanced technology cannot be easy to use. But it can! Driving a Tesla is fairly straightforward, but building one is not. Flying the new Eclipse jet is comparatively easy, but designing and constructing the aircraft is extremely difficult. And although it was pretty difficult to fly Spaceship One out of the atmosphere twice in two weeks, it was nothing compared to the difficulty of designing such a modern spaceship.
How do you fight the perception that MySQL is not suitable for 'the real world' because it is free?
Mårten: That's a challenge we share with all open source products, and I believe that such misperceptions will be removed over time by the overwhelming momentum of open source at large. So it is not so much a product-specific issue. But we need everyone's help to set records straight.
In a market where people are just looking for stability, simplicity & scalability, where do you turn for innovation in your products? Is there a lot of research and development towards new features and completely new products in MySQL's community or do you aim primarily to do one thing well? How do you influence the direction of this research in such a large open source project? Do you attempt to add direction at all?
Mårten: I am very proud of the innovative power inside our company, but even more important is the notion that "innovation happens elsewhere" (that's a great book that I recommend, as is "Democratizing Innovation"). We just announced a new monitoring and advisory service which we have innovated inside the company and with the help of customers.
But more massive is the innovation that happens in the MySQL ecosystem - in the user space. Look at the XML wrappers, RSS converters, full-text search modules or any of the toolkits that have been developed for MySQL. Or take PBXT - a new transactional storage engine, or the custom-built storage engines that Google, Friendster and others have developed. It is in the interaction with these advanced users that we learn what's useful and what isn't.
It takes a degree of humility and openness (and eradicating any Not Invented Here feelings) to be able to make good use of innovations from the ecosystem. But in return it is a much more productive way. I see it as a Darwinian system where the best ideas survive. Nobody can know for sure exactly where the development is heading, but if millions of MySQL users try out various new ideas, all the right things get developed.
We still need to improve our ability to receive innovations from the community, but I am proud of how far we have come already. Look at the MySQL Forge if you are interested: fforge.mysql.com
A few questions, only one about the biz. For those of us who like designing and researching and wish to spend our time on that, and don't like the thought of spending time on sales and promotion, or begging for money from VC vultures, or figuring out tax forms, stock options, and such, or sifting through thousands of resumes trying to find a few good people to hire, or knowing when a deal is a bad one to be avoided at all costs, or all the other aspects of business, what are wannabe independent software developers to do? If I try to start a business, it'd be so I can make some money doing what I like, not sink time into the business of business. How'd MySQL handle that when it started?
The parent's R&D question reminded me of another question. A goal of future versions of ReiserFS is to make database programs unnecessary and obsolete. Reiser asserts the only reason you even need a database program is because current file systems cannot do things like efficiently store, access, and query thousands of small records. File systems should be able to do everything a database can do. Apart from the bit about being in jail, is Reiser crazy, or is he on to something?
Anyway, do you recommend or favor some file systems over others for best performance from MySQL?
Mårten: I think you had a total of three questions.
First, when MySQL got going, it initially was run day-to-day by the three founders Monty, David and Allan. In the year 2000 they realised it was growing beyond what they could handle, so they reached out to get a CEO, a board of directors, and VC capital. This is a great model for those who want the company to grow and who are ready to share decision-making with others.
Your other question is about what a software developer of today could do. I believe it is easier to start a business today than 10 years ago, and I believe there are some great avenues to follow. For instance, you can develop open source software that wins the hearts and minds of users, and then you can license or sell the software to a bigger vendor if you want to avoid the hassles you mention.
Mark Matthews is a great example. He had developed the best JDBC driver for MySQL, and then we acquired his software and hired him full-time. JBoss has done similar "acquisitions". Another alternative is to build a website that provides the intended functionality as a service. The benefit there is that you don't have to build a distribution channel, because the web is the channel. And then there can be some great outcomes if you don't want to run your own company. Just look at Flickr or YouTube, for instance, who got acquired by web giants for good sums of money.
Your third question is about filesystems versus databases. If I were a filesystem developer, I might claim that databases will become obsolete. But as I am a database developer, I will claim that filesystems will become obsolete! Humour aside, I don't have a specific recommendation, but I do believe that we will always have heterogeneity in the software world. There will always be several alternative technologies for every single problem.
One of the most common complaints I've heard about the business model of profiting on support for a product, is that it provides motivation to keep the product from becoming very user friendly. After all, if the product is too easy to use, who will pay for support? In my own experience, I've seen a lot of companies that consider support to be insurance, and don't use it for help with installation, configuration, or to overcome usability issues so much as a way to cover their asses in case something goes very wrong. Do a lot of your customers use support to overcome usability problems and if so, does this de-motivate you to solve other usability issues?
Mårten: This is a great question. First, I think closed source vendors are proving the hypothesis incorrect, because they are the ones who have un-friendly products although they have a licence revenue stream. And open source products, which typically lack a licence fee, are the ones with the best user friendliness. Why is that? I think the reason is that popularity is worth more than the marginally improved fees you could get for a user-unfriendly product. Sure, we lose some purchase orders because customers simply don't need our support. But at the same time we gain millions of new users, and they in turn help us develop the product and drive our marketing.
I think one of the reasons MySQL is so popular is that we continue to take user-friendliness seriously. We may joke about leaving some bugs in the product in order to have more support fees, but in reality we take the bugs very seriously. And when we at times have more bugs than we would like to have, the whole organisation is in pain until we get the upper hand and kill more bugs than we produce. Version 5.0 was such an example - when it first came out as GA it had more bugs than earlier versions. It didn't feel good to see the list of incoming bugs, so we rearranged tasks and expanded our QA test coverage in order to fix the situation. I hope you who have used the latest versions of MySQL 5.0.26 have seen the significant improvements.
Your website touts you as having the lowest defects per KLOC by up to 12 times the industry standard, what do you attribute as the leading factor to your success in this respect? Since cold cash is the traditional method, how do you incentivise code quality in an open source product?
Mårten: I think open source has a wonderful benefit over closed source that often is forgotten: When you know that your work may be scrutinised in public by others, you simply do a better job. It is some magical combination of pride and (fear of) shame.
So I am claiming that the same developers will do a better job of producing open source than closed source software. The analogy is your backyard: why is the backyard never as tidy as the frontyard of a house? You spend more time in the backyard, don't you? And it is you taking care of both the front and the back. The only difference is that your neighbours see your frontyard but not your backyard. It's as simple as that.
Additionally, the reality of the scrutiny, i.e. the peer reviews, ensure that a lot of bugs and defects are detected and removed early. So I am not the least surprised that open source is 12 times cleaner than closed source. The really scary thing is all the stuff that is buried deep inside closed source software, out of the sight of everyone and without any proper stewardship.
First, congratulations on MySQL's market capitalization! My question is:
I have been working part time for about 6 years on software for text/data mining and general semantic information extraction. Almost all of my development is in Common Lisp, but I have ported little bits to Java and released that under the GPL in the past. I view this as a small, niche market, not like MySQL. What do you think that chances are for making money on GPLing a niche product?
MySQL is very widely used so if you capture commercial use icensing costs for a small percent of users, you do very well. For my software, with luck perhaps a few hundred companies a year might start adopting my product. Does it seem like wishful thinking for me to use a GPL based business model like MySQL's?
I want my customers to have my source code for a lot of reasons, but I would also like to capture revenue. I might just end up going to market as a proprietary product that incidently includes source code, with licensing that prohibits redistribution to non-customers.
Thanks for your help,
Mark
Mårten: Good question. I used to state in presentations that open source probably is best suited for products with huge user bases. But I was always proved wrong. Somebody would come up to me and tell about a successful open source niche product. So I have learned that you can be successful with open source in any environment.
I think the key is to provide real value to your users or customers - initially free of charge, but for continuous support against a fee. In that way you can build credibility in your market and gain important insights in what customers need, and you can also build a business. But don't think it is easy to find a business model that fits with free or open source software. It is difficult. But it is possible. You have to take some risks before hitting on the right answer.
8) Commercial vs free - where to draw the line
by Internet Ninja
I work for a good sized business and looked at using the Cluster Jumpstart but when I told my boss the cost and that we'd have to pay for flights he laughed at me, even though we're starting to really use mySQL pretty seriously now for some stuff.
With costs for things like this and gold/platinum support also relatively high on a per server basis it seems there's a wide gap between community based support which costs nothing and enterprise support which appears somewhat pricey.
How do you draw the line for paid vs free support particularly since a lot of SME's are using mySQL and may be unable to afford it? Was it a conscious decision to pitch it high to display value in the product?
Mårten: This is essentially a question of price elasticity. If we lower the unit prices, we may sell more, but will we sell that much more? If we increase the prices, we may have fewer customers but they may be more profitable.
We have an ambition to be affordable and available for all, and therefore our prices are typically a tenth of what you would pay for closed source databases. But MySQL Cluster is a state-of-the art solution that in its own market segment beats all other databases hands-down. The price may sound high to someone from a smaller company, but it is carefully weighed against market conditions. Many customers find that it is not only the best solution technically, it is also the least expensive one. If the price is prohibitively high for someone, then they can always use the community edition and do the work themselves.
In your five years as MySQL CEO, what has been your proudest moment? Do you find it difficult to lead a company based on a product that belongs to a community? Do you ever experience any fallout/backfire from running your company on such a business model?
Mårten: Thanks for the question! I felt very proud when we visited Google for the first time and people would come out of their rooms just to see the "MySQL folks". I had scheduled a CEO-to-CEO meeting with Eric Schmidt, but in addition to him we had a dozen developers who all wanted to know about MySQL internals. Fortunately, I had David Axmark (co-founder) with me and he did the technical presentation! Another proud moment was our users conference this year with a thousand or so in the audience, all gathered just to listen to the State of MySQL. Those situations make us realise that we are changing the world - we are making a difference.
The great thing with our business is that we get to pursue goals that we are passionate about. We get to work with the smartest people in the world on the newest and coolest database technologies. We get to stand up to defend the freedom of software and to fight software patents. We contribute to the wealth and happiness of what is called the bottom of the pyramid - people who may not have the financial means to buy software but who have dreams and goals they want to pursue. Of course it all needs to make sense from a financial perspective for everyone involved, so it all needs to boil down to a good business model. But, as I noted, that is exactly the great thing with our model.
But we also need to know that it is very difficult to walk the fine line between freedom of software and freedom to pursue profits. The two are not at odds with each other, but there are overlapping areas where you need to have all details right. We have made our mistakes over the years, and I hope we have fixed them. If we haven't, let me know and we'll get onto it. I am not expecting everyone to agree with our business model, and every now and then we get flamed by someone, but I do hope that people generally respect our business decisions. And so far that has clearly been the case.
A friend of mine just wrote to me: "If you can find a new way for folks to make money from FOSS without compromising fundamentals, good for you. Others can follow your lead. Just don't compromise the fundamentals." That captures the essence of the question very well.
10) Appliance possibility?
by Roblimo (added editorially
because of this discussion)
Now and then we hear rumors that Oracle is going to either come out with its own Linux distribution, sell a single "stack" with Oracle products running on Linux or else sell a complete hardware appliance that runs Oracle on Linux.
Back in 2003 there was a significant PR splash touting database server appliances made in partnership by Pogo Linux and MySQL, but we haven't heard much about that idea since. We know you now have many channel partners, including hardware vendors, but this is not quite the same.
Do you have any plans to come out with either a Linux/MySQL "single stack" software product or a preloaded Linux/MySQL+hardware appliance? And if not, would you change your mind if Oracle started selling either of these products?
Mårten: First, if Oracle launches their own Linux distro, then we take that as a great victory for open source. (And we ask - is the database next?) The most successful distros include JBoss and MySQL and many other products, so we would naturally make sure that Oracle gets all the help they need in putting our product on their operating system.
As for appliances and stacks, I am not sure that we would choose to compile our own stack. There are so many tempting business models and products, but to really grow fast there are just three main rules: Focus, Focus, and Focus. In our ecosystem we have many partners who could provide a stack, and we are very supportive of them. HP has the Linux reference architecture, Pogo their appliance, and Sourcelabs and Spikesource came out with software stacks. The power of open source and the power of LAMP is in the collaboration between the companies, not so much in what one single company can accomplish.
11) What about community?
(inserted by martenmickos himself)
MySQL is enormously popular and has a vibrant ecosystem, but it seems that the core product is primarily developed in-house. Are you at all interested in contributions, and what are you doing to stimulate community engagement?
Mårten (answering his own question): Initially, although open source, MySQL was developed by just one person - our founder Monty. Over the years we have expanded the group of developers both in-house and in the community. But we have more work to do. We need to make the product more modular so that it is easier to contribute distinct modules (such as storage engines or full-text search modules). We need to document the source code better (we are doing it with Doxygen). We need to make the contribution process as easy as possible.
We have very strict requirements on quality and ownership of intellectual property before we put something in the commercial product, but in the MySQL Community Server we are becoming much more open to contributions. We also need to set up websites and systems for broad collaboration in our community.
Planet MySQL has become a great aggregator of MySQL blogs, and the MySQL Meetups are popular local events. The MySQL Forge is a place for contributions, and soon we will launch the Winter of Code program with coding contests. For the most passionate MySQL users and developers there is the MySQL Camp in November (mysqlcamp.org). And of course all of us will get together in Silicon Valley in April for the annual users conference.
But no matter what we organise on behalf of MySQL AB (by the way, AB means "Aktiebolaget" i.e. "Incorporated"), the true value of the community will always be generated by the community itself. We are still on a learning curve in terms of all the possibilities that this offers. So please share your ideas with us. What should we do more of and what less? How could we bring together MySQL users from all over the world to accomplish bigger things? How could we together change the world for the better?
It is amazing what open source has accomplished in the last 15 years, and I am even more excited about what it can do in the next 15. But my excitement is anchored in our community. Alone I can accomplish nothing, but with the help of millions of users worldwide, we can accomplish just about anything.
I hope I answered all questions clearly and conclusively. Let me know if I missed anything.
If you have a comment or follow-up question, please post it. Mårten will spend as much time responding to your comments as his schedule permits.
I have one comment: Good answers to the questions. And thank you for your valuable time! It's nice to know that MySQL has an intelligent respectable CEO. All too often we concentrate on the Patricia Dunns of the world, it's people like you that make me second guess my claim that I would never want to be CEO of a company.
On that note, one last question I had though of would be, "Do you view yourself as a typical CEO or an abnormality in the pay-band of sharks that upper corporate America so often seems to be?"
Thanks for the question. I don't know what kind of CEO I am. I am just following the instincts I have developed over the years - from being a boyscout when I was young to engaging in all kinds of business and non-business activities in my late teens and twenties, and later. Most of the time I have chosen to do what is fun rather than what could have brought fortunes, so perhaps I am different in that sense. But as CEO my task absolutely *is* to create fortunes. Perhaps you should ask people who have worked with me or work with me. They may have a better perspective.
by Anonymous Coward
on Friday October 20 2006, @12:21PM (#16518319)
MySQL is facing extreme competition from above and below. PostgreSQL is currently expanding both upwards towards Oracle and DB2, while concurrently expanding downwards towards MySQL. On the other end, SQLite is rapidly putting upwards pressure on MySQL. We find that both of these alternatives have a much friendlier licensing scheme than MySQL, and both have features and quality that MySQL currently lacks.
How will MySQL respond to these threats? With SQLite being a suitable replacement for low-end tasks, and PostgreSQL proving excellent for anything beyond what SQLite can't do, is there really any need for MySQL these days?
It's no doubt that people will continue to use MySQL for years, just due to their current investments in existing MySQL installations, as well as the time they spent learning MySQL. But beyond that, does MySQL have a future?
The OP is spot on. Besides being easier to install, MySQL has things like the PHP MySQLi interface. SQLite actually has a better PHP interface IMO, but sometimes it's literally impossible to get things done with it.
Both postgres and mysql use MSI to install on windows, and both install a windows service. Postgres even creates a postgres user account in the installer and installs its service to run as that user, while mysql runs as.\LOCALSYSTEM. Postgres has lots of checkboxes in its installer for the various features you might want, like GIS, RTree, etc, while MySQL has a few nice options for setting defaults based on the expected use pattern.
Speaking as someone who installs both on workstations all the time, I can say the out of the box install experience is pretty much identical.
For quite some time, installing PostgreSQL on Windows was either a long and complicated process involving manual creation and configuration of user accounts and manual registration of services or installation of Cygwin. Back in the late nineties and early oughts when MySQL started to gain its mindshare ascendency over PostgreSQL, getting PostgreSQL to run well on Windows was something of a tiresome task. For some of us, the payoff was well worth it. For those looking for a quick and dirty solution, it wasn't worth the hassle.
In free software and open source communities it is often believed that MySQL's competition is Firebird, Postgres, and SQLite. But I see it differently. Those products are of great quality and they will definitely continue to have strong followings (that may very well grow). Taken as a group, we compete with each other for the hearts and minds of open source developers, and thereby we also (each one of us) become better over time.
But elsewere it is MySQL that creates the competition. We are successfully scoring victories over the "big three": Oracle, Microsoft, and IBM. That's where the main battle is being fought. We draw strength from our enormous user base in the FOSS community and use that to compete in the commercial world. That market is estimated to be 15 billion USD. Many of you may not care about business and dollars or euros, but as CEO I do, and I know that by winning in the commercial market, we get money for which we can develop more FOSS software that you then can use and modify and re-distribute and so on.
Make sense?
You also have a comment on our licensing scheme. My view is that it is unfavourable only for the ones who are trying to close-source their apps without giving anything back. If you are all FOSS (Free and Open Source Software), you can use our software completely freely. If you wan't to close something, we will be happy to sell you a closed licence. In summary, we have a business model that works, which is what allows us to grow the organisation, support FSF, fight software patents. etc. But I continue to be interested in your suggestions on how we can improve our model. Have a look at the MySQL Forge and our new program for encouraging congtributions, for instance. Does that make sense to you and is it a change to the better? If not, what would be? Thanks!
The question was about the future. While you're correct, MySQL may be edging into the commercial market at this time, what's to really stop PostgreSQL, or even SQLite, from eventually doing the same? I gather than MySQL is only ahead at this point because more people know of it. It does get far more press coverage and shelf space at bookstores than PostgreSQL gets. But people are beginning to learn more about PostgreSQL, and it's use is growing. The same goes for SQLite.
OK, sorry for not understanding the question. Here is what we do about the future:
Thanks to its popularity, MySQL has become a platform for innovation. By this I mean that increasingly, other innovators are attaching their leading-edge technology to ours, thus enhancing the overall competitivess of the product.
We did it ourselves with MySQL Cluster. That's technology originally developed by Ericsson - and today it is an absolute category leader in telco and networking. Nokia, Alcatel and Nortel are all building real-time network nodes on top of MySQL Cluster. No one else has a main-memory based shared-nothing cluster with that high throughput and availability. Or take the new Monitoring and Advisory Service that we are launching as part of MySQL Enterprise - this is a novel innovatoin built on the feedback from our most advanced users and customers.
As for partners, there are companies developing special-purpose storage engines for MySQL, with the help of which we will be able to lead in new markets. Others develop encryption technologies, data synchronisation, or something else. Whether it is produced by the community, by partners or by ourselves, these innovations will help provide the new solutions that the world needs.
I think you are saying that software business is essentially an innovation battle, and I agree with you. We innovate in production models, organisational models, business models and most definitely in software technology. But, of course, we must not get complacent.
I agree that one of the drawbacks to the licensing schemes is the price, but really, that's unavoidable. In closed-source software, you have thousands, if not millions, of people who pay some small amount for the product and that, in turn, buys down the costs of support, maintenance, and R&D. In an OSS project like mySQL, almost all of those people are using it for free. And without anyone to buy down the costs mentioned above, paid support costs and licenses must be higher, as the people who are there t
SQLite is in fact public domain. In jurisdictions that don't recognize the public domain, this tends to devolve to a BSD license without the requirement to distribute the license doc.
Ah, ignore me. They're using a bizarre CVS/Web gateway that lists deleted files inline with ones that are still in the current version but with a different icon. And doesn't mention that they're deleted on the log page for them. Strange.
I enjoy most of them! Somebody gave me a can of "Martens Lager" from Belgium (a famous beer country) so that's a favourite. I am a great fan of Guinness, especially when I visit London and Dublin. I've come to like Samuel Adams and Anchor Steam in USA. In my native Finland I enjoy Karhu ("bear"). The list is longer but I'll stop here.
I'm surprised that there were no questions about the real crisis facing MySQL which is that their two most reliable transactionally aware storage engines, InnoDB and BerkeleyDB, are now both owned by their competitor Oracle.
Isn't anyone else here concerned with that or is it really true that MySQL is only used as a relationally aware ISAM?
Great question and I am happy to address it. I'd say there are three main responses to your question:
First, you can't kill a GPL product by just acquiring it. If you as the owner continue to maintain it (as Oracle has done so far), nothing bad has happened. If you stop maintaining it, the community will quickly take over and make sure the software stays uptodate.
Secondly, I believe that the open source world has a self-healing mechanism built in. When something disappears or is at risk at disappearning, replacements quickly emerge. Completely on his own, Paul McCullagh developed the transactional PBXT storage engine for MySQL. And our partner Solid did the same. Check out their website http://www.solidtech.com./ [www.solidtech.com] There are other storage engines in development and under design.
Thirdly, as a company we are ensuring that there are strong transactional storage engines available for MySQL. MySQL Cluster is one and the Falcon project is another one. Falcon is a modern transactional storage engine built by Jim Starkey (known as the inventor of MVCC and the one who coined the term blob) on basis of technology he had developed and that we acquired. Falcon will soon come out as alfa.
The acquisition by Oracle of InnoDB (i.e. Innobase Oy) sent some shock vibes through the open source community a year ago, and perhaps rightly so, but I think we can be proud of what has transpired since then. As for Sleepycat (and their engine BerkeleyDB), it never was in any real use inside MySQL and after looking at the technology we decided a long time ago not to pursue that alternative.
Overall, there is another learning from all of this. It is a step towards increased modularity of MySQL, which in itself makes it easier for others to contribute code. We have taken an "architecture of participation" as a priority for us, and making the product modular is one important step in enabling participation. If you have good ideas on how to achieve higher modularity and enable more contributions, let us know!
Unfortunately, I missed the initial call for questions, but are there any plans for MySQL to support bi-temporal queries? Tracking history of values in a database is a problem I'm constantly running up against, and there doesn't seem to be a vendor out there who is addressing the problem.
There have been many attempts to distribute databases, but there are enormous problems with the approaches typically used (point-to-point makes for very slow synchronization, nobody seems entirely sure what/where/how to parallelize, there are usually single points of failure, etc).
Another area that has been worked on has been to allow database developers to embed more and more complex SQL-based scriptlets and "helper" functions into the database. However, it is a truism that interpreters (even of bytecode) are painfully slow and offer nothing that a module plugin mechanism wouldn't have (provided you could install modules via SQL statements) and most developers would be better leaving data processing to the clients rather than the server anyway. (The closest I've seen was Informix' blade technology, and that was horribly unreliable and tedious.)
The bottom line is this: There have been a lot of database innovations over the years. Some - I'd say most - have been great ideas but the popular interpretation and implementation has been terrible. This is not the fault of any of the ideas, but I would take it as suggestive that programmers are not being as imaginative or creative as they could be.
My question? How can a database company:
Combine the artistry vital to any creative effort with the architectural precision needed to make the art something special?
Keep things recognizable enough to be usable, without repeating everyone else's mistakes?
To what do you attribute your success over Postgresql, which supported true ACID and more important features like subqueries, triggers and such a lot earlier than MySQL? Do you think it's because you provided a Windows version and they didn't?
In my experience, success is always a result of a number of things that are done right, plus an amount of luck. In other words, many stars must be aligned.
I believe that for MySQL it was vital that the founders were so customer-focused from day one. They responded to every single email. They listened carefully and they took care not to be arrogant. They wrote a good reference manual. They made sure the product could be downloaded and installed in no more than 15 minutes (and you may have noticed that the best programmers are usually also impatient, and you lose them unless you provide value to them quickly).
MySQL is all the database that most applications need. Consequently more people use MySQL than PostgreSQL. Most (not all) organizations that need the features of PostgreSQL that MySQL lacks already have Oracle, DB2 or Informix licenses and tend to use those. Not only that but MySQL for a long time was superior to PostgreSQL (lower hardware requirements, faster to configure, higher performance on simple queries when used as a web front end) in very influential markets during the dot com boom. The result is t
As a bona fide geek, I'd much rather the world run on TRDBMS (where the T stands for Truly) systems rather than the SQL engines being touted as RDBMS solutions by the big database vendors. But the fact of the matter is that few business applications require a rigorous database schema and enforcement of Relational Integrity so that the results of various queries can be theoretically proven to be correct rather than being merely being tested and passed against use cases. Situations that require this level of
But if you're making a web discussion system or a relatively simple retail site WOuld having your credit card misbilled or sensitive information sent to the wrong person change your mind?
Or if your comments are misassociated with another user's and the Department of Homeland security begin to take an interest in you would you change your mind?
In other words, there is nothing trivial about it. 'Good enough' is just a politically correct term for 'slipshod' or 'crap'.
MySQL was much easier to install and ran faster than Postgres at the time (this also largely explains the success of PHP -- mod_perl is *still* a pain to work with). In fact, when it comes to things like replication, MySQL is still easier to install -- Postgres-R and Slony-II always seem to be hiding off in a corner, away from any sense of being "official". Since MySQL's primary niche was and still is to back web apps with a single front end UI, API, and usually a small development team (typically one person), having to put basic database logic like transactions into the application layer wasn't too punitive to preclude considering mysql.
Mind you, I still remember with disgust how MySQL's docs would trash the whole concept of transactions, and I still think it's abominable how MySQL's own system tables, very critical things, are still stored in MyISAM, and how the whole MyISAM storage engine needs to die, etc... but it really doesn't matter to many shops. It's quite clear that the trend is to move business logic like triggers and SP's out of the database (transactions do of course need to stay in) and move to a generic storage engine. MySQL was born into and is growing up in that niche, while other databases are adapting themselves to it.
In short, its success can be summed up in three words: First Mover Advantage
We have many terabytes of data and all kinds of complex business logic where I work, and it's all in Oracle, but there's hardly a SP to be seen. Some functions and views are there for convenience, that's about it. And I'm finding that this is not an unusual setup. For my own apps, MySQL still isn't being considered, but that's largely for the misfeatures (concerning data integrity) it has, not the features it lacks.
Many of the people who trash MySQL, and MyISAM in particular, seem to come from a formal CS educational background, or at the very least were trained on commercial RDBMS's that supported all those whiz-bang features that MySQL lacked for so long (and still lacks, in a few cases). I, on the other hand, knew next to nothing about databases when all of a sudden I had to build an entire infrastructure around one, with next to no money. Yeah, I know, this is insane, blah blah blah, but that was 8 years ago, the company itself is now 10 years old, and the gamble paid off. My point, however, is that I didn't have these preconceived notions about what a database server was supposed to be, so I just worked with the limitations of early versions of MySQL and grew as its feature set grew.
Even today, I find MyISAM extremely useful. Many of our data sets are big (hundreds of millions, or well over a billion, records in tens to hundreds of gigabytes) but are essentially read-only. For these, MyISAM is great. I can load and index the data on a machine with tons of RAM and fast disks, then copy it to much less powerful production machines and, with all the heavy lifting done, I have lightning-fast access to my data. It's great. Backups and crash recovery are much easier when you can just resynchronize sets of files using rsync, never touching all those huge tables full of read-only data.
ACID compliance and transactions just aren't necessary for everything a database server does in all contexts. Sometimes the reduced overhead and simplicity of the problem means MyISAM is the best choice.
Thanks for the question. A detail: the partnership is a regular one, not a strategic one (where "strategic" would mean that it is a top priority for the company and we have a whole team working on it, like we do with HP or SAP for instance).
We certainly have been criticised for striking a deal with SCO, but I think we also have explained our reasoning and motivations well (especially on Groklaw a year ago). Financially we have gained from it because there are payments from SCO to us. To reiterate our main motivations: there are end-users on SCOs platform that we think deserve the best database they can get, so we think it is right to serve them. We do not agree with SCO on what they are doing in the lawsuits, but then we also think we should not be the judge of that. The customers of SCO can vote with their feet, and the courts of law are there to pass the verdicts. Please read the full Groklaw discussions for more on this.
What I hope the world sees is that MySQL AB makes up its own mind (even when it may not be the most popular decision), stands for its decisions, and is ready to openly debate the pros and cons of any decision. In the long run, that's in my mind the only path to success. We may make wrong decisions at times, but at least we are making decisions and at least we are moving forward.
In some ways, the question is by now nearly ten years old, but here is my story: At Solid I was in charge of a campaign to make it popular on Linux which was a novel thing at the time. For a very short time Solid indeed was the most popular Linux database (in 1996 or so). So when Solid's board decided to focus on big opportunities in telco and telematics rather than on popularity on Linux, I decided to leave.
That's one of the reasons why I a few years later so gladly accepted the offer to become CEO of MySQL - I could take up the idea where I had left off att Solid, and with a momentum a hundred or thousand times stronger.
Interestingly, when we fast forward to today, Solid is back in this game and has just released their open source version which integrates as a storage engine for MySQL!
Hopefully we'll treat this interviewee better than the last one.
The last guy got roasted because he tossed off some glib & patronising answers and proceded to act like a dick in his subsequent comments. By contrast, Marten has been respectful and insightful in all his answers. I would be very surprised to see him get widely flamed.
If the only need you needed from SQL Server was stored procedures, there was a ton of alternatives a long time ago. And stored procedures are (to some extent) being phased out by other things. That being said, when you set up SQL Server, Oracle, etc, its not for a feature from 10 years+ ago. Its for things like Business Intelligence service integration, data mining, etc.
He's a CEO and he spoke to the business side of each question. For example, look at his question about whether MySQL was going to get into the database appliance market. He said point blank that MySQL AB is going to focus on their engine and let others do the integrating of software/hardware. That is a direct, non-nonsense answer.
Further, many of the questions were very poorly formed, especially in light of the fact that they were being directed to someone running a business rather than writing code. For example, the question of whether databases will be deprecated in favor of file systems. From a business perspective that is a meaningless question as the functionality remains the same. It makes no difference to a company like MySQL whether they're selling their engine as a MySQL DB or MySQL FS. He even hinted at the lack of differentiation in his answer that of course the fs folks say that the db will go away but we see it as the fs going away. If the fs and db merge then it follows that db vendors become fs vendors and vice versa. Its not really a very interesting question from the business perspective other than it puts competitors from two separate market segments where they are notin competition with into a new market segment where they are in competition with each other.
Are you freakin kidding me? Despite focusing on the business aspects of each question, these are some of the most straightforward and insightful responses I've seen in a slashdot interview. While he briefly touted a few new services and features, he focused on answering the questions instead of turning it into an infomercial. If a MySQL developer were asked the same questions, you'd definitely get a more technical response, but considering he is a businessman, these responses are excellent. The example people are giving about him sidestepping the filesystem vs database question is one place I thought he gave an exceptionally good answer. Instead of getting into a pissing match with the ReiserFS folks, he basically said that every situation can have multiple solutions, which is exactly the same thing that the programmer's motto TIMTOWTDI states.
Overall, I think he did a very good job in answering every question. If slashdot wants a more technical response, they should ask a lead developer for the interview.
One, make sure you have a strong foundation in OO programming. Yes, I know; PHP isn't strictly OO, but the structure and discipline it takes to write code in an OO language will help you out immensely since you can apply a lot of the same principles.
PHP isn't a great first language. It is extremely loose and it is easy to form bad habits early. But, if you are disciplined, you can rapidly produce good, reusable code.
Second, learn some database theory - especially normalization. A great book that I still refer to is "Database Systems: A Practical Approach to Design, Implementation, and Management" by Thomas Connolly and Carolyn Begg.
So, ultimately, the best advice to a person just starting with PHP/MySQL is to get a good foundation in the fundamentals of programming and database systems.
Once you have that, it doesn't matter what language or DBMS you use.
There's a 99% chance it'll fuck you over with an SQL exploit. And with the other 1%, you still get the query cache rendered useless from storing hundreds of small variations on one or two query strings.
Use prepared statements for anything that doesn't completely fit between a pair of single quotes.
by Anonymous Coward
on Friday October 20 2006, @03:46PM (#16521293)
Replying anonymously because I moderated on this story.
I would qualify your statement somewhat. Never put an untrusted variable into a mysql_query(). Of course you can (and should) put variables into a query, but use mysql_real_escape_string() first.
Your comment about the query cache makes no sense though. If you're making different queries, then the cache won't be used no matter what. The only point I can think of that you're trying to make is that, allowing someone to pass in a string directly means they can change the case, which wouldn't change the result of the query, but will change whether the query cache is used or not. This is a different problem though, which can be solved any number of ways. It's certainly not a critical reason not to pass a variable into a query.
I should leave the technical questions to our technical experts.
But quickly, the benefits of the storage engine architecture is very tangible for advanced users with heavy loads and different loads on different sets of data. Over time, we will work on streamlining the api's and the syntax so that you don't have to be concerned about this issue. But, typically, those who need to use multiple storage engines typically also will be happy to make use of their specific features although they slightly differ from each other.
We're adding many of those features (fulltext searching, common backup) to a layer above the storage engines, so all engines will eventually have many of them. One particularly important project is a new backup system that makes it easier to handle all of the engines. MySQL Forge has the design documents for the new streaming online backup API [mysql.com] and feedback to the team is much appreciated if you see any ways to improve it.
Transaction support needs to be in the storage engine and it's useful to have storage
Thanks for the proposal on sequence support. In our company I am not the one to decide on features or present timetables or roadmaps on them. But I am very happy to take your suggestion to our engineers. We get tons of suggestions for new features, and it is difficult to decide which ones to do and in what order. The more people want a specific feature, the more likely we are to implement it.
And perhaps you could help us? If you can design it for us, or even contribute code, that goes a long way.
My Perspective on MySQL (Score:2)
So shouts to Arjen Lentz, Stewert Smith and Colin Charles.
Comment about this interview (Score:5, Funny)
Re: (Score:3, Funny)
Thanks (Score:5, Interesting)
On that note, one last question I had though of would be, "Do you view yourself as a typical CEO or an abnormality in the pay-band of sharks that upper corporate America so often seems to be?"
Thanks again!
Re:Thanks (Score:5, Informative)
Thanks for the question. I don't know what kind of CEO I am. I am just following the instincts I have developed over the years - from being a boyscout when I was young to engaging in all kinds of business and non-business activities in my late teens and twenties, and later. Most of the time I have chosen to do what is fun rather than what could have brought fortunes, so perhaps I am different in that sense. But as CEO my task absolutely *is* to create fortunes. Perhaps you should ask people who have worked with me or work with me. They may have a better perspective.
Marten
Parent
Competition from above and below. (Score:5, Interesting)
How will MySQL respond to these threats? With SQLite being a suitable replacement for low-end tasks, and PostgreSQL proving excellent for anything beyond what SQLite can't do, is there really any need for MySQL these days?
It's no doubt that people will continue to use MySQL for years, just due to their current investments in existing MySQL installations, as well as the time they spent learning MySQL. But beyond that, does MySQL have a future?
I've never been asked about PostgreSQL or SQLite (Score:3, Informative)
Just do a search on Monster. 101 job hits come up on Postgres. 3 job hits come up on SQLite. Thousands of hits come up when searching for MySQL.
Re:Competition from above and below. (Score:5, Insightful)
Also - been to computer book store recently?
Parent
Re: (Score:2)
Re:Competition from above and below. (Score:4, Informative)
Speaking as someone who installs both on workstations all the time, I can say the out of the box install experience is pretty much identical.
Parent
That is true now, but it wasn't always (Score:4, Insightful)
Parent
Re:Competition from above and below. (Score:5, Informative)
In free software and open source communities it is often believed that MySQL's competition is Firebird, Postgres, and SQLite. But I see it differently. Those products are of great quality and they will definitely continue to have strong followings (that may very well grow). Taken as a group, we compete with each other for the hearts and minds of open source developers, and thereby we also (each one of us) become better over time.
But elsewere it is MySQL that creates the competition. We are successfully scoring victories over the "big three": Oracle, Microsoft, and IBM. That's where the main battle is being fought. We draw strength from our enormous user base in the FOSS community and use that to compete in the commercial world. That market is estimated to be 15 billion USD. Many of you may not care about business and dollars or euros, but as CEO I do, and I know that by winning in the commercial market, we get money for which we can develop more FOSS software that you then can use and modify and re-distribute and so on.
Make sense?
You also have a comment on our licensing scheme. My view is that it is unfavourable only for the ones who are trying to close-source their apps without giving anything back. If you are all FOSS (Free and Open Source Software), you can use our software completely freely. If you wan't to close something, we will be happy to sell you a closed licence. In summary, we have a business model that works, which is what allows us to grow the organisation, support FSF, fight software patents. etc. But I continue to be interested in your suggestions on how we can improve our model. Have a look at the MySQL Forge and our new program for encouraging congtributions, for instance. Does that make sense to you and is it a change to the better? If not, what would be? Thanks!
Marten
Parent
But what about the future? (Score:3, Interesting)
I gather than MySQL is only ahead at this point because more people know of it. It does get far more press coverage and shelf space at bookstores than PostgreSQL gets. But people are beginning to learn more about PostgreSQL, and it's use is growing. The same goes for SQLite.
Frankly, I don't think many companies
Re:But what about the future? (Score:5, Informative)
OK, sorry for not understanding the question. Here is what we do about the future:
Thanks to its popularity, MySQL has become a platform for innovation. By this I mean that increasingly, other innovators are attaching their leading-edge technology to ours, thus enhancing the overall competitivess of the product.
We did it ourselves with MySQL Cluster. That's technology originally developed by Ericsson - and today it is an absolute category leader in telco and networking. Nokia, Alcatel and Nortel are all building real-time network nodes on top of MySQL Cluster. No one else has a main-memory based shared-nothing cluster with that high throughput and availability. Or take the new Monitoring and Advisory Service that we are launching as part of MySQL Enterprise - this is a novel innovatoin built on the feedback from our most advanced users and customers.
As for partners, there are companies developing special-purpose storage engines for MySQL, with the help of which we will be able to lead in new markets. Others develop encryption technologies, data synchronisation, or something else. Whether it is produced by the community, by partners or by ourselves, these innovations will help provide the new solutions that the world needs.
I think you are saying that software business is essentially an innovation battle, and I agree with you. We innovate in production models, organisational models, business models and most definitely in software technology. But, of course, we must not get complacent.
Marten
Parent
Re: (Score:2)
In an OSS project like mySQL, almost all of those people are using it for free. And without anyone to buy down the costs mentioned above, paid support costs and licenses must be higher, as the people who are there t
Re:Competition from above and below. (Score:4, Informative)
SQLite is in fact public domain. In jurisdictions that don't recognize the public domain, this tends to devolve to a BSD license without the requirement to distribute the license doc.
Parent
Re: (Score:2)
Re: (Score:2)
Beer as in Beer? (Score:4, Funny)
What is your favorite carbonated alcoholic beverage?
Re:Beer as in Beer? (Score:5, Informative)
I enjoy most of them! Somebody gave me a can of "Martens Lager" from Belgium (a famous beer country) so that's a favourite. I am a great fan of Guinness, especially when I visit London and Dublin. I've come to like Samuel Adams and Anchor Steam in USA. In my native Finland I enjoy Karhu ("bear"). The list is longer but I'll stop here.
Marten
Parent
Re: (Score:2)
Where were the real questions? (Score:5, Interesting)
I'm surprised that there were no questions about the real crisis facing MySQL which is that their two most reliable transactionally aware storage engines, InnoDB and BerkeleyDB, are now both owned by their competitor Oracle.
Isn't anyone else here concerned with that or is it really true that MySQL is only used as a relationally aware ISAM?
Re:Where were the real questions? (Score:5, Informative)
Great question and I am happy to address it. I'd say there are three main responses to your question:
First, you can't kill a GPL product by just acquiring it. If you as the owner continue to maintain it (as Oracle has done so far), nothing bad has happened. If you stop maintaining it, the community will quickly take over and make sure the software stays uptodate.
Secondly, I believe that the open source world has a self-healing mechanism built in. When something disappears or is at risk at disappearning, replacements quickly emerge. Completely on his own, Paul McCullagh developed the transactional PBXT storage engine for MySQL. And our partner Solid did the same. Check out their website http://www.solidtech.com./ [www.solidtech.com] There are other storage engines in development and under design.
Thirdly, as a company we are ensuring that there are strong transactional storage engines available for MySQL. MySQL Cluster is one and the Falcon project is another one. Falcon is a modern transactional storage engine built by Jim Starkey (known as the inventor of MVCC and the one who coined the term blob) on basis of technology he had developed and that we acquired. Falcon will soon come out as alfa.
The acquisition by Oracle of InnoDB (i.e. Innobase Oy) sent some shock vibes through the open source community a year ago, and perhaps rightly so, but I think we can be proud of what has transpired since then. As for Sleepycat (and their engine BerkeleyDB), it never was in any real use inside MySQL and after looking at the technology we decided a long time ago not to pursue that alternative.
Overall, there is another learning from all of this. It is a step towards increased modularity of MySQL, which in itself makes it easier for others to contribute code. We have taken an "architecture of participation" as a priority for us, and making the product modular is one important step in enabling participation. If you have good ideas on how to achieve higher modularity and enable more contributions, let us know!
Marten
Parent
Bi-temporal capabilities? (Score:3, Informative)
Database innovations (Score:3, Interesting)
Another area that has been worked on has been to allow database developers to embed more and more complex SQL-based scriptlets and "helper" functions into the database. However, it is a truism that interpreters (even of bytecode) are painfully slow and offer nothing that a module plugin mechanism wouldn't have (provided you could install modules via SQL statements) and most developers would be better leaving data processing to the clients rather than the server anyway. (The closest I've seen was Informix' blade technology, and that was horribly unreliable and tedious.)
The bottom line is this: There have been a lot of database innovations over the years. Some - I'd say most - have been great ideas but the popular interpretation and implementation has been terrible. This is not the fault of any of the ideas, but I would take it as suggestive that programmers are not being as imaginative or creative as they could be.
My question? How can a database company:
Re:To serve Man. (Score:4, Informative)
Thanks. I am ready for both easy and tough questions and look forward to a healthy debate.
Marten
Parent
Re:To serve Man. (Score:4, Interesting)
Parent
Re:To serve Man. (Score:5, Interesting)
In my experience, success is always a result of a number of things that are done right, plus an amount of luck. In other words, many stars must be aligned.
I believe that for MySQL it was vital that the founders were so customer-focused from day one. They responded to every single email. They listened carefully and they took care not to be arrogant. They wrote a good reference manual. They made sure the product could be downloaded and installed in no more than 15 minutes (and you may have noticed that the best programmers are usually also impatient, and you lose them unless you provide value to them quickly).
Marten
Parent
PostgreSQL is overkill for most tasks (Score:3, Insightful)
That's not true (Score:3, Interesting)
Re: (Score:3, Insightful)
WOuld having your credit card misbilled or sensitive information sent to the wrong person change your mind?
Or if your comments are misassociated with another user's and the Department of Homeland security begin to take an interest in you would you change your mind?
In other words, there is nothing trivial about it. 'Good enough' is just a politically correct term for 'slipshod' or 'crap'.
Re: (Score:2)
Re:To serve Man. (Score:4, Interesting)
Mind you, I still remember with disgust how MySQL's docs would trash the whole concept of transactions, and I still think it's abominable how MySQL's own system tables, very critical things, are still stored in MyISAM, and how the whole MyISAM storage engine needs to die, etc
In short, its success can be summed up in three words: First Mover Advantage
We have many terabytes of data and all kinds of complex business logic where I work, and it's all in Oracle, but there's hardly a SP to be seen. Some functions and views are there for convenience, that's about it. And I'm finding that this is not an unusual setup. For my own apps, MySQL still isn't being considered, but that's largely for the misfeatures (concerning data integrity) it has, not the features it lacks.
Parent
MyISAM is my friend (Score:4, Interesting)
Even today, I find MyISAM extremely useful. Many of our data sets are big (hundreds of millions, or well over a billion, records in tens to hundreds of gigabytes) but are essentially read-only. For these, MyISAM is great. I can load and index the data on a machine with tons of RAM and fast disks, then copy it to much less powerful production machines and, with all the heavy lifting done, I have lightning-fast access to my data. It's great. Backups and crash recovery are much easier when you can just resynchronize sets of files using rsync, never touching all those huge tables full of read-only data.
ACID compliance and transactions just aren't necessary for everything a database server does in all contexts. Sometimes the reduced overhead and simplicity of the problem means MyISAM is the best choice.
Parent
Re:To serve Man. (Score:4, Funny)
Parent
Re:To serve Man. (Score:5, Interesting)
Parent
Re:To serve Man. (Score:5, Interesting)
Thanks for the question. A detail: the partnership is a regular one, not a strategic one (where "strategic" would mean that it is a top priority for the company and we have a whole team working on it, like we do with HP or SAP for instance).
We certainly have been criticised for striking a deal with SCO, but I think we also have explained our reasoning and motivations well (especially on Groklaw a year ago). Financially we have gained from it because there are payments from SCO to us. To reiterate our main motivations: there are end-users on SCOs platform that we think deserve the best database they can get, so we think it is right to serve them. We do not agree with SCO on what they are doing in the lawsuits, but then we also think we should not be the judge of that. The customers of SCO can vote with their feet, and the courts of law are there to pass the verdicts. Please read the full Groklaw discussions for more on this.
What I hope the world sees is that MySQL AB makes up its own mind (even when it may not be the most popular decision), stands for its decisions, and is ready to openly debate the pros and cons of any decision. In the long run, that's in my mind the only path to success. We may make wrong decisions at times, but at least we are making decisions and at least we are moving forward.
Marten
Parent
Re:To serve Man. (Score:4, Interesting)
In some ways, the question is by now nearly ten years old, but here is my story: At Solid I was in charge of a campaign to make it popular on Linux which was a novel thing at the time. For a very short time Solid indeed was the most popular Linux database (in 1996 or so). So when Solid's board decided to focus on big opportunities in telco and telematics rather than on popularity on Linux, I decided to leave.
That's one of the reasons why I a few years later so gladly accepted the offer to become CEO of MySQL - I could take up the idea where I had left off att Solid, and with a momentum a hundred or thousand times stronger.
Interestingly, when we fast forward to today, Solid is back in this game and has just released their open source version which integrates as a storage engine for MySQL!
Marten
Parent
Re: (Score:2, Insightful)
The last guy got roasted because he tossed off some glib & patronising answers and proceded to act like a dick in his subsequent comments.
By contrast, Marten has been respectful and insightful in all his answers. I would be very surprised to see him get widely flamed.
Re: (Score:2)
I thought his answers were very direct (Score:5, Informative)
Further, many of the questions were very poorly formed, especially in light of the fact that they were being directed to someone running a business rather than writing code. For example, the question of whether databases will be deprecated in favor of file systems. From a business perspective that is a meaningless question as the functionality remains the same. It makes no difference to a company like MySQL whether they're selling their engine as a MySQL DB or MySQL FS. He even hinted at the lack of differentiation in his answer that of course the fs folks say that the db will go away but we see it as the fs going away. If the fs and db merge then it follows that db vendors become fs vendors and vice versa. Its not really a very interesting question from the business perspective other than it puts competitors from two separate market segments where they are notin competition with into a new market segment where they are in competition with each other.
Parent
Re:Nothing much said (Score:5, Insightful)
Are you freakin kidding me? Despite focusing on the business aspects of each question, these are some of the most straightforward and insightful responses I've seen in a slashdot interview. While he briefly touted a few new services and features, he focused on answering the questions instead of turning it into an infomercial. If a MySQL developer were asked the same questions, you'd definitely get a more technical response, but considering he is a businessman, these responses are excellent. The example people are giving about him sidestepping the filesystem vs database question is one place I thought he gave an exceptionally good answer. Instead of getting into a pissing match with the ReiserFS folks, he basically said that every situation can have multiple solutions, which is exactly the same thing that the programmer's motto TIMTOWTDI states.
Overall, I think he did a very good job in answering every question. If slashdot wants a more technical response, they should ask a lead developer for the interview.
Parent
Re: (Score:2)
Re:If I am a newbie.. (Score:4, Insightful)
One, make sure you have a strong foundation in OO programming. Yes, I know; PHP isn't strictly OO, but the structure and discipline it takes to write code in an OO language will help you out immensely since you can apply a lot of the same principles.
PHP isn't a great first language. It is extremely loose and it is easy to form bad habits early. But, if you are disciplined, you can rapidly produce good, reusable code.
Second, learn some database theory - especially normalization. A great book that I still refer to is "Database Systems: A Practical Approach to Design, Implementation, and Management" by Thomas Connolly and Carolyn Begg.
So, ultimately, the best advice to a person just starting with PHP/MySQL is to get a good foundation in the fundamentals of programming and database systems.
Once you have that, it doesn't matter what language or DBMS you use.
Parent
Re: (Score:3, Interesting)
Of course, once you learn about normalization, you might not want to use MySQL anymore...
Re:If I am a newbie.. (Score:4, Insightful)
There's a 99% chance it'll fuck you over with an SQL exploit. And with the other 1%, you still get the query cache rendered useless from storing hundreds of small variations on one or two query strings.
Use prepared statements for anything that doesn't completely fit between a pair of single quotes.
Parent
Re:If I am a newbie.. (Score:4, Informative)
I would qualify your statement somewhat. Never put an untrusted variable into a mysql_query(). Of course you can (and should) put variables into a query, but use mysql_real_escape_string() first.
Your comment about the query cache makes no sense though. If you're making different queries, then the cache won't be used no matter what. The only point I can think of that you're trying to make is that, allowing someone to pass in a string directly means they can change the case, which wouldn't change the result of the query, but will change whether the query cache is used or not. This is a different problem though, which can be solved any number of ways. It's certainly not a critical reason not to pass a variable into a query.
Parent
Re:Problem with different table types. (Score:4, Insightful)
I should leave the technical questions to our technical experts.
But quickly, the benefits of the storage engine architecture is very tangible for advanced users with heavy loads and different loads on different sets of data. Over time, we will work on streamlining the api's and the syntax so that you don't have to be concerned about this issue. But, typically, those who need to use multiple storage engines typically also will be happy to make use of their specific features although they slightly differ from each other.
Marten
Parent
Re: (Score:3, Informative)
Transaction support needs to be in the storage engine and it's useful to have storage
Re:When will get MySQL get full blown sequences (Score:4, Informative)
I am reading you.
Thanks for the proposal on sequence support. In our company I am not the one to decide on features or present timetables or roadmaps on them. But I am very happy to take your suggestion to our engineers. We get tons of suggestions for new features, and it is difficult to decide which ones to do and in what order. The more people want a specific feature, the more likely we are to implement it.
And perhaps you could help us? If you can design it for us, or even contribute code, that goes a long way.
Marten
Parent