6 ms·
Why doesn't Quora use PostgreSQL
- dman 16y agoerror 500. maybe its unrelated to them not using postgresql.
- zende 16y agohere's the correct link: http://www.quora.com/Why-doesnt-Quora-use-PostgreSQL http://www.quora.com/Why-doesnt-Quora-use-PostgreSQL HN must have stripped out the ' from the link when I submitted it
- zende 16y agogrrrrr. apparently HN always strips single-quotes from links. There should be single-quote in the link in doesn't. Here's a bit.ly link :-( http://bit.ly/9iQWn8 http://bit.ly/9iQWn8
- chacha102 16y agoYou could always URL encode it: http://www.quora.com/Why-doesn%27t-Quora-use-PostgreSQL http://www.quora.com/Why-doesn%27t-Quora-use-PostgreSQL That way everyone clicking on the link from the home page doesn't get taken to the 500 page.
- 146 16y agoArgh, that is really annoying though, and our servers really should be able to figure out that the two links, apostrophe or not, should lead to the same question. I'm a bit late to the game; was the original link up top unchanged? Edit: should be fixed now.
- tdavis 16y agoThis is a common mistake people make, I think. Just because an ecosystem is smaller does not mean it is inferior (or less practical). In fact, the opposite is routinely true. Is it harder to find tutorials for PostgreSQL? Yeah, maybe. Is it harder to get high-quality advice and resources from subject matter experts? No; in fact, it's far easier. I have used PostgreSQL for many years and in all of them every question I've had has been answered quickly and properly by somebody in #postgres who knows way more about postgres and SQL than I'd ever even want to know. And what about hires? When a million people "know" MySQL it takes a lot more effort to find somebody who actually does. There may be fewer contractors for PostgreSQL but they are practically by definition better than the average MySQL contractor. unlike learning a programming language, with databases, the domain knowledge is harder to discover and more risky if you don't understand it Exactly. So should you trust the ecosystem that relies on lazy, bandwagon developers for the majority of its market share, or the one that has been silently doing shit the right way for years? There may be a whole lot of really skilled MySQL admins out there (I guess there must be given how many huge sites go to extreme lengths to make MySQL work for them), but I can find you a handful of grossly overqualified PostgreSQL admins in no time. The same can't be said for the former.
- bdr 16y agoSeconding #postgres as awesomely smart and helpful. Especially RhodiumToad, who always seems to be in there.
- shazow 16y agoOh man, RhodiumToad on #postgres totally saved my ass a couple of times like 2 years ago. Good times.
- jasonkester 16y agoI see this #whatever notation a lot. What does it refer to?
- rubyrescue 16y agoirc chat, generally on the 'freenode' irc server - http://freenode.net/ http://freenode.net/
- jasonkester 16y agoWow, really? Chat? In 2010??? That would never have occurred to me. Thanks!
- rmc 16y agoIRC is still heavily used in the open source world. It's a great resource and you should add it to your arsenal of 'places to get support on FLOSS stuff'
- epochwolf 16y agoI'm on irc most days of the week. It's far from dead.
- catch23 16y agoShould we be doing video chat in 2010? People used telephones 30 years ago, and it's still popular now :-)
- code_duck 16y agoThat's why database abstraction is so nice. If I ever get sick of MySQL - or say, decided I didn't want to use Postgres - it's not hard to switch!
- drivingmenuts 16y agoIt's very helpful to know what's going on behind the scenes of that pretty little database abstraction, though.
- code_duck 16y agoIf I ever have to care, hopefully I'll be hiring some guy with a beard to think about that for me.
- scg 16y agoDatabase abstraction isn't, or at least isn't practical. Small projects don't need an interchangeable database. Bigger projects won't let you get away without making assumptions about the database. Nothing but the basics work the same between SQLite and ORACLE.
- code_duck 16y agoSQLite... Oracle? never used either one, but I believe it. I'm talking about MySQL vs. Postgres.
- mhd 16y agoDepends on your abstraction system. If we're talking about SQL, the incompatibilities abound. And ORM's or other libraries tend to be either very, very complex or tend to implement everything in the most simple way. Both not very good for performance. Never mind that most frameworks don't have the same level of support for every DB (open source libraries tend to have very limited Oracle/SQL Server support) And this is only talking about queries, once we get to triggers, constraints or even stored procedures…
- 16y ago
- Empact 16y agoA few bugs/limitations of Mysql not shared by Postgres. All AFAIK. * Integer columns with null constraints will silently translate nulls to 0s, rather than throwing an error (as constraints in all other contexts do). Imagine a database which, on violation of a foreign key constraint, just silently picked the first row in the target table - it's just insane. * Transactions can't roll back schema changes, so if you have a Rails migration which fails on the application of a unique index in the midst of other operations, too bad. Your DB is stuck in the no-mans-land between migrations. * Constraints are anemic relative to postgres: no integer range or string length constraints, no whitelist, blacklist, regex match, &c. &c. There are certainly others I've run into, but the above indicate to me that the Postgres developers are working with/delivering a better code-base.
- masklinn 16y ago> Transactions can't roll back schema changes That's a feature of postgres rather than a limitation of mysql however. As far as I know the SQL Standard doesn't ask for transactional DDL, Oracle has pretty much no support for transactional DDL (in 10g anyway, each DDL statement is executed in its own transaction and any pending transaction is COMMITted before a DDL), I have no idea about SQL Server.
- masklinn 16y ago(and don't get me wrong, it's a totally awesome feature and it should be praised to high heaven, but it's an additional feature nonetheless, rather than a limitation of the concurrence)
- gxti 16y agoMSSQL supports it because it was inherited from Sybase. SQLite also supports it as well. You're right that it's a feature, but frankly I can't live without it -- there's no way to write safe schema migrations!
- joshu 16y agothere's one useful thing about postgresql: specifically, interviewees that inform you you should be using postgresql can be immediately rejected. "do you use mysql or postgresql?" "oh, mys-" "YOU SHOULD SWITCH TO POSTGRESQL!!"
- andrewvc 16y agoI think this can be extended to any interviewee who starts redesigning your stack before they're even hired can be rejected.
- joshu 16y agoHmm. Probably, but there are people out there who are qualified to know how to scale better than you, presumably. On the other hand, people who are religious about technology choices (faith rather than logic) tend to be bad matches. People who don't revisit their decisions don't make great engineers. I don't want choices made because of a previous lifestyle decision.
- danielrhodes 16y agoTotally true. Anybody who is a fanboy of a certain technology is not a good hire. It's always good to have passionate people, but passionate about an idea, not a tool. The bottom line is that in most cases, it doesn't even matter, just as long as things are getting done. If the people you work with don't appreciate that, you've got deeper problems.
- pilif 16y agoI don't know. Personally, I'd prefer an interviewee that comes to the interview with an open mind and actually tries to make suggestions based on the view of the infrastructure that they have acquired based on the information I have given them or they inferred in their research of my company. Of course they might be wrong because naturally, they can't have the full picture. But I'd much rather have an employee I can hold a discussion with and get input from then one that blindly does what I tell them to. In the end, I might as well have made a bad decision or overlooked something. In fact, having an engaging discussion during the interview is quite a sure-fire way to get hired if you are in an interview with me (provided the stuff you talk about makes sense).
- scg 16y agoIt's interesting to see how PostgresSQL didn't get nowhere near the popularity of MySQL. I think a few major things contributed to this: 1) MySQL focused on performance first while PostgresSQL positioned themselves as "feature-complete." Of course, that was years ago and in the meantime they became comparable in both aspects. MySQL+InnoDB is ACID compliant and Postgres matches the InnoDB performance. Sure, Postgres might still have the upper hand in the variety of features but MySQL has MyISAM. If you don't need transactions you can get a significant performance boost over Postgres. Speed IS a feature and one could argue it's more important to many than all the nice extra things Postgres has. 2) MySQL was compatible with mSQL so they got a pretty good user base right from the start. mSQL later became obsolete. 3) Inertia. Even if Postgres would be net superior to MySQL (think feature complete but faster than MyISAM) it would still take a lot of time to catch up, if ever. There are tons of tools already developed for MySQL and a huge knowledge base around it. Just like C++, Windows, or any other big technology, there's a lot of inertia to it.
- mncaudill 16y agoMost important of all: PHP.
- blueberry 16y agoI'd say most important is LAMP and that unfortunately Postgres starts with the letter P.
- _delirium 16y agoI think having a "launch" at the right time might have had some impact also. MySQL launched in 1995, right around the time that the idea of generating hypertext dynamically was taking off, so a bunch of web stuff was looking for a lightweight, fast DB without necessarily a lot of features. Postgres had been around since the 1980s as a research project, and in 1994 was publicly released as an open-source project and added SQL support (rather than its own query language), but it was sort of off the internet's radar as a research project mostly known in academia. The official launch of the rebranded PostgreSQL was in 1997, but that might've been a bit late already, since 1995-1997 were a fairly crucial two years for the LAMP stack's birth.
- narrator 16y agoThere are a number of companies that provide support for PostgreSQL. Enterprise DB is probably the most prominent of them. Kind of funny that they didn't have a good technical reason not to use PostgreSQL, just that the community was smaller. Postgres 9, with streaming replication and easy to setup bullet proof read only slave replication will probably move momentum in the direction of PostgreSQL. The replication was always easier to setup on MySQL, which gave it an advantage.
- weego 16y agoIs quora flooding their own site with self-posed questions trying to get publicity and rankings? The only time I've ever heard of it is from the oxygen of publicity HN seems to give it.
- 146 16y agoNah. You can usually (but not always) tell who asks the question by checking the first person who's following the question, or by checking the question history by clicking on the timestamp.
- pilif 16y agoOk. Being borderline trollish here, but if I read this article, this means to me "yeah. we are using a technically inferior solution and thus risking data loss and increasing the workload on our developers because our HR department gets more resumes if we search for an in-house database specialist". Postgres usually does its thing and does it well. You usually don't get weirdness that requires you to even hire a specialist. And if you do, the consultants around are great and actually understand the problem. As other people here have said: If you find someone listing PostgreSQL experience on their resume, you know they have the experience. If you find somebody listing MySQL, you'd have to check whether they are just listing it because they have heard of it or whether they really understand the problem domain. So. DB specialists are settled. What about developers? PostgreSQL and MySQL are close enough in what SQL constructs they support (no wonder - MySQL provides a subset of SQL anyways), so coming from MySQL to PostgreSQL usually is trivial and the few things that are unsupported unix_timestamp() for example, you can write wrappers for if you really need them. Of course, developers will at first find it strange that they can't, for example insert a 200 characters string into a varchar(10) column, but even the most braindead developer sooner or later will understand that silently truncating data usually is a bad thing. No. The arguments listed in that article are just fear of the unknown and total non-issues (in german, there's this saying: "Was der Bauer nicht kennt, das frisst er nicht" - ever so true). I'm glad I can work with PostgreSQL day-in, day-out. I'm glad I migrated that huge application from MySQL to Postgres back in 2000. I'm glad I did not touch MySQL for serious stuff ever since then. I understand if you need to use MySQL if you want to run some software that runs only on MySQL. But if you are writing your own application, there's just no reason not to got with the real RDBMS. /rant.
- rimantas 16y agoI'm glad I migrated that huge application from MySQL to Postgres back in 2000. I'm glad I did not touch MySQL for serious stuff ever since then. You should refrain from commenting on MySQL then. It's amazing (and sad) how many pro-PG-anti-MySQL folks don't even know basic things about MySQL but feel entitled to rant and call it "toy DB", "not real RDBMS", etc.
- pilif 16y ago
- blueberry 16y agoThose who commented in favor of postgres: What are some of the biggest deployments of postgres? Facebook has a gargantic deployment of MySQL and it just works. The author of the answer on Quora mentions reliable scalability as the most important factor for their MySQL choice on another answer here: http://bit.ly/dm6HtQ http://bit.ly/dm6HtQ. What is the biggest system that postgres is deployed in?
- petrilli 16y agoA better question would be: who uses MySQL as anything but a glorified key-value store when reaching large sizes? I personally have been involved in trying to use MySQL as a "real database" in the 10-100TB range and let me tell you, it's not pretty. I'm not sure about the open source PostgreSQL, but I know Greenplum has petabyte level warehouses running on a distributed version of it. A few observations: 1) MyISAM's performance is highly dependent on certain idiosyncrasies of a lot of applications. Using MyISAM in this day and age is a very bad idea. InnoDB at least gets closer to real database behavior. 2) The "query optimizer" is insulting at best and actively impeding getting things right if you use it for much more than simple queries. Something that's more along the lines of what really large databases (as opposed to KV stores) get used for can implode the server. Personally, I think too many people try and stick things in relational databases that don't belong there simply because they've got the hammer in their hand and it's easier than pulling out a screwdriver.
- blueberry 16y agowho uses MySQL as anything but a glorified key-value store when reaching large sizes? My assumption is both Quora and Facebook use MySQL this way. While you are right that this is not using it as a real database, I want to know if PostgreSQL is deployed in a similar setup at all. Most of the people (including you) don't take into account the fact that there are many cases where MySQL (used as a KV store) proved to work, while I have never heard of such huge PostgreSQL deployments. If this was a general discussion regarding MySQL and PostgreSQL I could understand that, however, I think the post is more about whether to choose MySQL or PostgreSQL if you are going to use it as a KV store.
- deleted 16y ago[deleted]
- efsavage 16y agoExcellent lesson to other startups: When two or more products do what you need, choose the one you can more easily hire help for. (not that there aren't a fair number of postgres experts, but there's no question there are far more competent mysql experts)
- masklinn 16y agoNo question, really?
- jinushaun 16y agoThis article is an example of choosing easy option over the better option. From a startup's perspective, it's completely understandable. Thousands of cheap MySQL admins, or a few hundred expensive PostgreSQL admins? As for the "nobody uses PostgreSQL" argument; Facebook and Twitter aren't an endorsement of MySQL because any Linux hosting provider out there will have MySQL installed BY DEFAULT. PostgreSQL would require you to upgrade to a more expensive account (for root access) and install it yourself. As a result, all the hobbyists learn on the free and always available MySQL when building "The Next Big Thing." Remember, Facebook was started in a college dorm room.