5 ms·
One wonders if Yelp could just run on a basic Postgres setup. It's not too much data, the data is relatively unimportant and the traffic is modest and mostly fr
by pbreit 3y ago
One wonders if Yelp could just run on a basic Postgres setup. It's not too much data, the data is relatively unimportant and the traffic is modest and mostly from US. How do the setups get so complicated?
- avereveard 3y agoYelp was founded 2004, 2004 postgres was different than 2024 postgres and storage and server options werent as powerful as today either. There were half a million restaurants back then or thereabout, and they wanted to store ratings and comments. That is not something you'd be able to put on one single database in 2004. Why didn't they simplify afterward I can't imagine, but I can see how a business directory at that age looked at the numbers and went yeah not in a database.
- onlypositive 3y agoCassandra was initially released in 2008. Back in 2004 I was running larger MySQL databases than yelp has now: https://www.enterpriseappstoday.com/stats/yelp-statistics.html https://www.enterpriseappstoday.com/stats/yelp-statistics.ht... > That is not something you'd be able to put on one single database in 2004. Sorry, but it was, plenty of companies had much larger databases back then running plain old master slave replication. But even if it wasn't: just don't run it all on one db? Nothing says you need to be able to join on the restaurant table and the comments table. Put them on different servers. That's all you're doing with Casandra anyway.
- tomnipotent 3y agoPostgres didn't ship built-in replication until 2010, and prior replication solutions like Slony were not options I would have enjoyed building a business around.
- onlypositive 3y agoMySQL shipped replication in 2000. This whole conversation is some webscale copium bullshit. I'm out.
- Kototama 3y agoCassandra is highly-available, your suggestion is not.
- onlypositive 3y agoMySQL master slave replication has failover, so it is technically highly available, especially if you have multiple slaves. It was also best practice back then so this argument is kind of weird. Also, whether you need a highly available database for a company like yelp is an implementation detail. Oh no, the database is down, how will Jonny decide where to go for lunch now?!
- Kototama 3y agoCassandra is more close to AP whereas MySQL with clustering is more like CP. So they serve different purpose. See this nice discussion on Stackoverflow: https://stackoverflow.com/questions/36404765/why-isnt-rdbms-partition-tolerant-in-cap-theorem-and-why-is-it-available https://stackoverflow.com/questions/36404765/why-isnt-rdbms-... > Also, whether you need a highly available database for a company like yelp is an implementation detail. You surely know better than them what they need, that's impressive.
- jmalicki 3y agoIf you're not just running it all on one db, why do you have to have all of your different DBs be on the same DB software? I used to work at Yelp, and at least at that time, a big use case of Cassandra was basically for what were essentially materialized views created from log data. At that point in time, MySQL or logs were the "sources of truth", but there were enough transactions going on that it made sense to have things like Cassandra around too for some of the other use cases.
- weego 3y agoI mean, for a start Cassandra wasn't available for years after that date, but either way, whatever Postgres was like back then Cassandra was much more of a piece of shit. Smells like implementing what the cool kids were doing to me.
- hobs 3y agoAgree, unless you were Facebook you at best heard it was cool. Everyone I knew who tried it out immediately went "blecchhh" and switched off or left after they got their company to adopt the technology, heh.
- deleted 3y ago[deleted]
- renegade-otter 3y agoBut there was Oracle. I actually worked on a dual MySQL/Oracle setup in 2004, and MySQL seemed like a toy database.
- redeyedtreefrog 3y agoI found this on their tech blog from 2016: https://engineeringblog.yelp.com/2016/08/how-we-scaled-our-ad-analytics-with-cassandra.html https://engineeringblog.yelp.com/2016/08/how-we-scaled-our-a... Whether they really needed cassandra or whether it was just using fancy complicated tech for the sake of it, I couldn't say.
- beoberha 3y agoYeah sounds like they liked it because of the infinitely scalable storage and high write throughput, but don’t really get into if they were having issues with all that on MySQL. Also, they use the term “analytics” a lot, but it seems to be a different use case than typical OLAP workloads since they were serving this data to customers adhoc.
- Spivak 3y agoScaling writes on MySQL/Postgres is a huge PITA once you hit the point where a single master on a chonky server can't handle it anymore and you lose most of the benefits of being on a relational db.
- mrweasel 3y agoAbout 6 years ago I was brought in as a Azure/operation consultant to help bid on a "project". Basically a sister-company had built a webapp for a client and we where to bid on hosting and migration away from the current fly-by-night hosting partner. The specs called for a Kubernetes cluster and a Cassandra database cluster for production and the same for testing. Everything about this project was presented as being highly complex. Digging into it with the client and the developers we reduced it to: One Docker container running in Azure websites and CosmosDB on the backend, which could basically run on the free tier. The whole thing hold less than 3GB of data and had maybe a few hundred requests per day. The client just loved the idea that they where special, dealing with massive amount of data and required scalability to keep costs under control. The developers more or less just ran with it and wanted to do Kubernetes and Cassandra sounded interesting and now they had a client that would pay for it. Technically I suppose that both Kubernetes and Cassandra where reasonable choices, had they had 1000x the load, but given their market they where never going to grow beyond 10x on this particular solution. We didn't get the contract. Our bid was insanely low (not really worth the cost of bringing in a new contractor), delivered something different that asked for (fair enough).
- brianwawok 3y agoHosted k8s to run a few docker image is almost no extra work and possibly less work than setting up your own docker hosting system. I see a small hosted k8s setup with a hosted sql server as a fine app for many things.
- mrweasel 3y agoTrue, but it's a complete waste if all you need is a single webapp and you're running it on something like Azure anyway which can just run that single Docker image. In this case you had a potential zero management environment, truly Cloud as it was meant to be, vs. managing Kubernetes, plus a database. You could go with managed Kubernetes (AKS) and a managed SQLServer, but why take on that cost? Edit: Even AKS isn't truly zero management, you need to do at least some of the work for the upgrades, so instantly more management, something you need to do, something that adds to the operational cost.
- zac23or 3y agoIn my experience, 100% of the time, the use of NoSql (excluding Redis) has nothing to do with the RDBS not being good enough, rather its "solves" another non-technical issue. Examples: 1. In one case, developers hate DBAs and MongoDB is outside the scope of DBAs. 2. A developer starts using CouchDB to include in the curriculum.
- rglzr 3y agoYelp's main database was a couple of MySQL clusters (several TB of total data) for almost all of the company's existence, but they've always had a penchant for architecture astronomy. The ad system had the most justification for novel data architectures historically (when I was there, it was generating and processing tens of terabytes of data per day via Hadoop/EMR, which was new and cool, and I'm sure it's at least an order of magnitude mode than that now).