News for hackers. Stuff that matters.
Re:I/O Is Faster Than CPU – Let’s Partition Resources and El... by jandrewrogers on Friday May 03, 2019 @11:25AM (#19819233)
At least in database kernels, we noticeably reached this threshold around five years ago with typical server hardware. This is an interesting computer science problem in that virtually all of our database literature is based on the presumption that I/O is much slower than CPU.

If you cleanroom a database kernel design based on the assumption that I/O performance is not the bottleneck, you end up with an architecture that looks very different than the classic model you learn at university. It is always a tradeoff of burning a resource you have in abundance to optimize utilization of a resource that is scarce, and older database architectures are quite wasteful of resources that have become relatively scarce on newer hardware.

Re:I/O Is Faster Than CPU – Let’s Partition Resources and El... by magicalhippo on Friday May 03, 2019 @03:24PM (#19821442)
Just skimmed the article, but it reminded me very much of how graphics APIs have evolved, due to similar motivation.

Just compare what it takes to draw a triangle in OpenGL 1.x[1] vs Vulkan[2].

[1]: http://nehe.gamedev.net/tutorial/your_first_polygon/13002/

[2]: https://vulkan-tutorial.com/Overview

Re:I/O Is Faster Than CPU – Let’s Partition Resources and El... by shereadsthenews on Friday May 03, 2019 @12:00PM (#19819554)
I don't know ... we used to interleave our hard disk formats because a hard disk could stream data faster than an i386 CPU could ingest it, and there was plenty of database research done prior to 1990.
Re:I/O Is Faster Than CPU – Let’s Partition Resources and El... by masklinn on Friday May 03, 2019 @12:08PM (#19819627)
I assume the IO you're talking about is (/was) sequential. And DBs are specifically engineered to sequentialise their IO (e.g. clustered indexes).

But even if SSDs do blow HDDs out the water on sequential IO, it's on random IO that the difference is most stark, the cost difference between sequential and random is much lower on SSD than on HDDs, and both random IO throughput and random IOPS shoot through the roof relative to spinning rust.

An SSD might be an order of magnitude better than an HDD on sequential IO, but will often be 2 or 3 on random IO. That means the loss of throughput from sequential IO to random IO (while still there due to commands overhead and the like) is much, much, much smaller on an SSD than on an HDD. And the story is similar on the latency front, an HDD might have a command latency in the low tens milliseconds, an SSD in the low-mid tens microseconds.

Re:I/O Is Faster Than CPU – Let’s Partition Resources and El... by briffle on Friday May 03, 2019 @01:14PM (#19820229)
Postgresql allows you to tune the 'cost' of sequential and random IO, to help the planner figure out the best way to get the data.

https://www.postgresql.org/docs/11/runtime-config-query.html...

Re:I/O Is Faster Than CPU – Let’s Partition Resources and El... by dorlaor on Friday May 03, 2019 @01:43PM (#19820521)
With LSM approach (log structured merge tree) we have at Scylla, we make all the writes batched/sequential and receive an awesome boost.

Some reads can be sequential too if you scan through the clustering keys.

Re:I/O Is Faster Than CPU – Let’s Partition Resources and El... by temac on Friday May 03, 2019 @04:32PM (#19821997)
> low-mid tens microseconds

From a modern CPU point of view, that's an eternity.

Re:I/O Is Faster Than CPU – Let’s Partition Resources and El... by warrenm on Friday May 10, 2019 @06:42PM (#19882957)
Still 1000x faster than milliseconds for HDD
Re:I/O Is Faster Than CPU – Let’s Partition Resources and El... by jandrewrogers on Friday May 03, 2019 @01:26PM (#19820340)
Database algorithms are typically designed for worst case storage throughput i.e. the bandwidth floor, which for hard disks is not sequential access patterns. In the spinning hard disk days you assumed a few MB/s per disk, because you would often see that in real systems. Even with a disk array, it usually wasn't enough to keep the CPU busy if real-world access patterns kept disk throughput near the floor.
Re:I/O Is Faster Than CPU – Let’s Partition Resources and El... by riazrizvi on Friday May 03, 2019 @02:52PM (#19821198)
I can see how the memory hierarchy will have layers removed, but it still exists because registers are where operations on data predominantly take place. So you still need to identify small working sets of variables that you extract return values from. I can see how a lot of caching logic will be obviated but not the principle of memory hierarchy, which says ‘load small batches of problem set, solve, store results and repeat’.
Re:I/O Is Faster Than CPU – Let’s Partition Resources and El... by owaislone on Friday May 03, 2019 @11:42AM (#19819393)
Are you aware of any efforts by existing databaes or entirely new databases built with this realization in mind?
Re:I/O Is Faster Than CPU – Let’s Partition Resources and El... by ignoramous on Friday May 03, 2019 @01:03PM (#19820135)
CMU's Andy Pavlo is probably at the forefront in this area, here's what they were working on (they're re-doing it all over again now as a yet to be announced project): https://news.ycombinator.com/item?id=14391523 Also, I'd encourage you to go through their Advanced Database class: https://www.youtube.com/playlist?list=PLSE8ODhjZXjYutVzTeAds...

Michael Stonebreaker, a Turing awardee, called for complete destruction of old database order in 2008: https://www.dbms2.com/2008/02/18/mike-stonebraker-calls-for-... post which, I think, they created VoltDB (H-Store) and SciDB.

Interesting to note that Andy Pavlo worked on Stonebreaker's H-Store.

Re:I/O Is Faster Than CPU – Let’s Partition Resources and El... by hueving on Friday May 03, 2019 @11:57PM (#19824349)
Why do you suppose nothing useful has come out of the CMU group for actual use? Is it just a case of limited payoff for marginal gain?
Re:I/O Is Faster Than CPU – Let’s Partition Resources and El... by ignoramous on Saturday May 04, 2019 @07:12PM (#19829964)
I'm in no position to comment on that, unfortunately. Not sure if Andy's group has detailed why their first-take didn't come off apart from this terse note on GitHub which notes that building an autonomous-db is what they're main goal is (rather than a nvme-first db, which seems like a sub-goal):

> The Peloton project is dead. We have abandoned this repository and moved on to build a new DBMS. There are a several engineering techniques and designs that we learned from this first system on how to support autonomous operations that we are doing a much better job at implementing in the second system.

Here's their alleged unannounced second-take: https://github.com/cmu-db/terrier

Re:I/O Is Faster Than CPU – Let’s Partition Resources and El... by jandrewrogers on Friday May 03, 2019 @04:27PM (#19821959)
Yes, there are efforts in this area. I started a first-principles database kernel design 4-5 years ago which has a couple different licensees and implementations, and should be showing up in a broad platform relatively soon. In open source, ScyllaDB is a credible implementation that goes half-way to addressing this (as an intentional reimplementation of Cassandra, it inherits some of the old style architectural features of Cassandra for better and worse). I am aware of a few other efforts at tech companies but in my opinion these are a mixed bag because they are borrowing too heavily from existing classic architectures for the sake of expediency to fully realize the benefits.

The archetypical differentiating features, relative to classic designs, of these future-looking (for lack of a better term) kernel designs is the prodigious exploitation of user space I/O, dearth of multithreaded synchronization, and the paucity of classic tree-like data structures (not necessarily hash tables, just not trees). The industry will get here eventually, some emerging tech sectors absolutely require it for their data models.

Re:I/O Is Faster Than CPU – Let’s Partition Resources and El... by Jach on Friday May 03, 2019 @01:12PM (#19820217)
ScyllaDB is probably in the right direction. It at least bypasses the kernel for networking (uses Intel's DPDK).
Re:I/O Is Faster Than CPU – Let’s Partition Resources and El... by PeterCorless on Friday May 03, 2019 @03:15PM (#19821372)
Yes. Pekka works at ScyllaDB, and the paper references Avi Kivity's work at Scylla twice in the endnotes, as well as the underlying Seastar engine that Scylla is built upon (that's where DPDK is embedded).
Re:I/O Is Faster Than CPU – Let’s Partition Resources and El... by AtlasBarfed on Sunday May 05, 2019 @12:23AM (#19831144)
IMO the biggest problem is that SQL joins don't scale on commodity hardware networks due to the CAP theorem, assuming you want availability. Network IO is a lot better these days, and per Scylla it can get to a pretty small instruction window, but still it isn't what XPoint and SSD crunch.

Database rearchitecture at the single node level can help optimize this, and maybe improve the megamachine SQL node to scale up to fatter sizes, but really big data is still a network IO and reliability challenge.

And it may be true we can pump a single fat node up to really huge throughput once some db rearchitecture fully leverages SSDs and I/O, but that just exposes more data to downtime if there is a network partition.

Re:I/O Is Faster Than CPU – Let’s Partition Resources and El... by farazbabar on Friday May 03, 2019 @02:09PM (#19820788)
Aerospike
Re:I/O Is Faster Than CPU – Let’s Partition Resources and El... by dustingetz on Friday May 03, 2019 @12:26PM (#19819772)
Re:I/O Is Faster Than CPU – Let’s Partition Resources and El... by sdegutis on Friday May 03, 2019 @12:56PM (#19820085)
Datomic is just a Prolog logical layer on top of traditional RDBMS (e.g. Postgres, H2, etc).
Re:I/O Is Faster Than CPU – Let’s Partition Resources and El... by lame88 on Friday May 03, 2019 @01:42PM (#19820515)
I'd agree it probably doesn't quite apply to this case, but there are similarities from what I've researched, and I think that description doesn't quite do it justice. First being that datomic is temporal with full on-demand history, which I think is a big deal; and has a serialized writer, n-reader architecture. As to how it may relate to this problem, I believe peer applications (in-process) for on-prem are able to exploit locality with the full indexes in-memory without round-trip queries - also the case for ions with datomic cloud. I'll let anyone more experienced clarify or correct me. The concept at least is really cool; I hope to give it a real test drive some time soon.
Re:I/O Is Faster Than CPU – Let’s Partition Resources and El... by dustingetz on Friday May 03, 2019 @01:34PM (#19820424)
No, Datomic storage is unbundled, prod configurations target basically DynamoDB.
Re:I/O Is Faster Than CPU – Let’s Partition Resources and El... by jchrisa on Friday May 03, 2019 @11:51AM (#19819472)
NoSQL is based on this realization. Rather than optimize for IO with normalization, denormalize and pipe data more or less directly from storage to clients, simplifying the compute and consistency model to make distributed data easier.
Re:I/O Is Faster Than CPU – Let’s Partition Resources and El... by mike_ivanov on Friday May 03, 2019 @11:53AM (#19819495)
The point of normalization is logical consistency, not IO optimization.
Re:I/O Is Faster Than CPU – Let’s Partition Resources and El... by jchrisa on Friday May 03, 2019 @11:57AM (#19819535)
Sure. But the point of (early) NoSQL was IO optimization, not logical consistency.
Re:I/O Is Faster Than CPU – Let’s Partition Resources and El... by acdha on Friday May 03, 2019 @01:36PM (#19820441)
I never saw it portrayed that way: it was always higher-level programmer ease of use pitches along the lines of “isn’t this easier than doing a JOIN?” pitch shortly before the speaker had a valuable learning experience about the value of data integrity and consistency.
Re:I/O Is Faster Than CPU – Let’s Partition Resources and El... by virgilp on Friday May 03, 2019 @02:06PM (#19820752)
You really don't remember the "web scale" memes about Mongo? It was always primarily about "performance".
Re:I/O Is Faster Than CPU – Let’s Partition Resources and El... by acdha on Friday May 03, 2019 @02:22PM (#19820913)
I don't remember seeing that predicated as a low-level I/O savings — it was always things about being easy to cluster or avoiding the performance overheads of ACID. The pitch was usually “it's easier and you don't need a skilled DBA”.
Re:I/O Is Faster Than CPU – Let’s Partition Resources and El... by adrianhel on Friday May 03, 2019 @08:02PM (#19823325)
What I heard was "You can practically scale indefinitely". Which I guess is more true of NoSQL. As is I/O savings. But it's not something I've ever heard it advertised for.
Re:I/O Is Faster Than CPU – Let’s Partition Resources and El... by rhizome on Friday May 03, 2019 @04:40PM (#19822066)
Performance was an imposed callsign of Mongo, the reason everybody started using it was the declarative schema stuff and so the dev didn't have to know how to start a terminal, which was a not-insignificant hurdle. It doesn't have significant performance differences over other simple KVs. "Faster" was primarily a measurement of learning curve.
Re:I/O Is Faster Than CPU – Let’s Partition Resources and El... by bogomipz on Friday May 03, 2019 @12:17PM (#19819688)
I was curious about the parenthetical "early" in your comment. Is this optimization no longer the case then? Could you elaborate on recent developments regarding this? I've been out of the NoSQL loop for some time and am genuinely curious.
Re:I/O Is Faster Than CPU – Let’s Partition Resources and El... by tracker1 on Friday May 03, 2019 @12:29PM (#19819800)
The problem is, it varies... you have what are effectively key/value stores to document databases, column stores and everything in between. You have systems built on other systems. RethinkDB and Cockroach have different approaches than Redis, Mongo, Cassandra or others.

CockroachDB gives an SQL interface over the top of a distributed data store with better consistency and relations. Cassandra has no real relations over a BigTable/Column-Store solution. It really just depends.

I think with what's coming out of SSD/NVMe and even Optain DIMMS, that there will be databases directly tuned to control/set their own data storage in these environments.

Re:I/O Is Faster Than CPU – Let’s Partition Resources and El... by dorlaor on Friday May 03, 2019 @01:46PM (#19820553)
We at Scylla tune the kernel, drives, stride, clock source automatically and benchmark the disk to figure out what's its maximum parallelism so it won't queue (we can saturate 8 NVMe) and we'll do the queuing within the DB's userspace so we can prioritize real time queries over background tasks:

https://www.scylladb.com/2018/04/19/scylla-i-o-scheduler-3/

Re:I/O Is Faster Than CPU – Let’s Partition Resources and El... by bogomipz on Friday May 03, 2019 @07:31PM (#19823181)
>"I think with what's coming out of SSD/NVMe and even Optain DIMMS, that there will be databases directly tuned to control/set their own data storage in these environments."

I think this is already happening. I think it was Aerospike that used the FTL of of NANd/NVMe drives for a direct key value store and I think another vendor maybe Fusion had an SDK for this as well. The Optane stuff looks really interesting, are there any server vendors shipping with those?

Re:I/O Is Faster Than CPU – Let’s Partition Resources and El... by Rafuino on Monday May 06, 2019 @03:06PM (#19842654)
Not OP but, yes, server vendors are shipping with Optane DC Persistent Memory, like Lenovo [1] and Supermicro [2], among others. Google also has a testing program [3, 4] with access to instances with 7TB of total memory.

[1] https://lenovopress.com/lp1066-intel-optane-dc-persistent-me... [2] https://www.storagereview.com/supermicro_superserver_with_in... [3] https://cloud.google.com/blog/topics/partners/available-firs... [4] https://docs.google.com/forms/d/e/1FAIpQLSeX1tN6Qt-aQUK2iVVi...

Re:I/O Is Faster Than CPU – Let’s Partition Resources and El... by jchanimal on Friday May 03, 2019 @12:35PM (#19819877)
By early NoSQL, I mean the projects that are basically an API wrapped around a data structure, that push the understanding of the data structure onto the developer. Newer products (like my employer FaunaDB) prioritize correctness and offer abstract query interfaces like GraphQL.
Re:I/O Is Faster Than CPU – Let’s Partition Resources and El... by bunderbunder on Friday May 03, 2019 @12:49PM (#19820028)
This one gets hard to pick into, given how nebulous the term NoSQL is.

One could probably argue, quite convincingly, that the point of truly early NoSQL was that SQL hadn't been invented yet.

Re:I/O Is Faster Than CPU – Let’s Partition Resources and El... by sieabahlpark on Friday May 03, 2019 @11:58AM (#19819539)
It's both.
Re:I/O Is Faster Than CPU – Let’s Partition Resources and El... by mike_ivanov on Friday May 03, 2019 @12:18PM (#19819702)
No, it is not. Normalization is an artefact of Relational Algebra (a set theory being applied to tabular data). It has nothing to do with concrete implementations and their concerns (such as IO). http://wiki.c2.com/?RelationalModel.

Moreover, ALL existing relational databases do denormalize data behind the scenes (think about caches and indexes) for the sake of IO optimization, which means that normalization does not achieve the IO optimization goal by itself (otherwise, why bother?)

Re:I/O Is Faster Than CPU – Let’s Partition Resources and El... by bunderbunder on Friday May 03, 2019 @01:02PM (#19820126)
It really is.

Originally, schema normalization was just about logical consistency. But that was before query optimizers were invented, and long before they grew to be so very optimized for working with normalized schemata.

Nowadays, even someone who cares 100% about performance and 0% about data integrity (And is somehow still using a relational database, yeah. So what? It's MY hypothetical.) still has good reason to default to something like 3NF. Insert famous Knuth quote here.

Caches and indexes and all that stuff may technically count as denormalizations, but, insofar as the definition of 3NF doesn't mention them, that's a tangential issue.

Re:I/O Is Faster Than CPU – Let’s Partition Resources and El... by crazygringo on Friday May 03, 2019 @03:41PM (#19821588)
> Nowadays, even someone who cares 100% about performance and 0% about data integrity (And is somehow still using a relational database, yeah. So what? It's MY hypothetical.) still has good reason to default to something like 3NF

That's just... wrong.

Best practices with database design are to start with a totally normalized schema because it reduces scope for errors/inconsistencies.

And then to intentionally denormalize where required to increase performance, in order to reduce lookups from joins or computing aggregate functions -- at the cost of having to manually ensure duplicated data remains consistent. Query optimizers can only do so much.

(If it weren't to increase performance, I can't really think of any reason why you ever would denormalize on a single database server, unless you have some extremely complicated calculations that SQL isn't capable of expressing?)

Re:I/O Is Faster Than CPU – Let’s Partition Resources and El... by bunderbunder on Friday May 03, 2019 @04:11PM (#19821831)
> And then to intentionally denormalize where required to increase performance

Hopefully under profiler guidance, like for any other optimization. For my part, the frequency that I find that trying a denormalization helps performance has been on a downward trend for a while now. Mostly down to just straight-up duplicating data at this point. Databases really are getting very good at what they do.

Re:I/O Is Faster Than CPU – Let’s Partition Resources and El... by ncmncm on Friday May 03, 2019 @11:36PM (#19824281)
This makes more sense than it seems to.

MongoDB's insight was that the overwhelming majority of data stores don't matter enough to justify worry about correctness. It doesn't go faster than other DBs if you turn on the "do it right" flags, but their customers mostly don't.

Would you be willing to wait an extra five seconds for page load to be sure the banner at the bottom of "people who looked at this also looked at these" list is fully up to date and correct? Or is filling the boxes with any old crap good enough?

Re:I/O Is Faster Than CPU – Let’s Partition Resources and El... by acdha on Saturday May 04, 2019 @07:11AM (#19825749)
> Would you be willing to wait an extra five seconds for page load to be sure the banner at the bottom of "people who looked at this also looked at these" list is fully up to date and correct?

This is a separate question — do you do a live query or pre-compute it? — and it’s not really significantly easier to do that with Mongo’s model.

The pitch I saw was usually based on it being easier than having to think about your data model in advance, which is relevant to your example: everyone I know who picked it did something like that, thought it was less work and that was great, and then had some problem which came down to copies of data getting out of sync and so e.g. the “also looked at” box had the wrong price or a typo which had been fixed elsewhere. Fixing that usually cancelled out what claimed performance advantages and then some.

Re:I/O Is Faster Than CPU – Let’s Partition Resources and El... by marshray on Friday May 03, 2019 @05:19PM (#19822387)
I see your analogy, but (NoSQL and its clients) are conceptually much higher up on the stack.

Interestingly, the paper does say:

    [eBPF] enables applications to perform up to L7 protocol (e.g., HTTP or Memcached) processing. 
    Furthermore, some programmable NICs are able to execute eBPF programs directly on the NIC hardware.
Re:I/O Is Faster Than CPU – Let’s Partition Resources and El... by sytelus on Friday May 03, 2019 @12:31PM (#19819825)
There are plenty of in-memory database architectures that takes full advantage of fast random access offered by DRAMs. I think paper focuses on OS design which is still tied with assumption of slow disks.
Re:I/O Is Faster Than CPU – Let’s Partition Resources and El... by jandrewrogers on Friday May 03, 2019 @01:47PM (#19820560)
In-memory databases are not economically scalable. To a first approximation, database volume is the integral of database throughput, so databases that require extreme I/O throughput also tend to require extremely high volumes of online data. Many typical sensor data models, which drive much of the need for high-throughput I/O, grow by petabytes per day so the multiple orders of magnitude difference in media cost make DRAM storage infeasible.

If the bottleneck is not storage bandwidth, and it isn't for many recent systems and modern software architectures, then there is no practical performance advantage to keeping your data purely in-memory. This has been demonstrable ever since PCIe HBAs with arrays of cheap SSDs became practical.

Re:I/O Is Faster Than CPU – Let’s Partition Resources and El... by gambler on Friday May 03, 2019 @02:22PM (#19820910)
>In-memory databases are not economically scalable.

SAP HANA is widely used for very large data sets.

Re:I/O Is Faster Than CPU – Let’s Partition Resources and El... by jandrewrogers on Friday May 03, 2019 @02:42PM (#19821097)
How are you defining "very large"? I've used HANA and even SAP doesn't make claim of real scalability -- the practical limitations are in their own documentation. And in real scalability testing, it struggles long before you reach those limits. For sensor data, I wouldn't use it for more than a few terabytes, and even then it has a few sharp edges when it comes to performance if you are not careful. No one is going to be putting petabytes into it, which isn't that much operational data these days.

And to my point you quoted, SAP HANA is extremely expensive to operate compared to alternatives. The licensing costs alone will kill you, never mind the hardware requirements.

Re:I/O Is Faster Than CPU – Let’s Partition Resources and El... by PeterCorless on Friday May 03, 2019 @03:00PM (#19821255)
This checks out. A single 12 TiB RAM u-12tb1.metal on AWS EC2 goes for $30.539/hr. For a month for one (24 * 30), that's a bill of $21,988.08 USD.

A single i3.16xlarge, with 15.2TB NVMe SSD goes for $4.992/hr, or $3,594.24 USD a month. 16.33% of the price.

I'm not going to argue whether an in-memory database (measured in ns) wouldn't give you performance improvements over fetching data from an SSD (measured in ms). But not everyone needs that speed or can afford it for that price.

Sources: https://aws.amazon.com/blogs/aws/now-available-amazon-ec2-hi...

https://aws.amazon.com/ec2/instance-types/i3/

https://aws.amazon.com/ec2/pricing/on-demand/

Re:I/O Is Faster Than CPU – Let’s Partition Resources and El... by K0SM0S on Friday May 03, 2019 @09:33PM (#19823708)
At a high-level, it seems expected that since the outside world (around the DB) operates on the same tiered storage (cache > RAM > disk > backup(>n)), economically it doesn't make sense to replace any tier by its direct superior, because the bottleneck becomes the outside world (any machine/infra that's not able to keep up anyway).

Not with storage but I/O, that's what the makers of the Cell processor (PlayStation 3) had in mind originally (it was culled before the final design though): huge IO, non-stop feeding the beast. The arch-goal was to be able to link Cells together to make a "network of CPUs" (network becomes sockets link) able to parallel executions. A hard (wild?) computer science dream/problem. (the final Cell CPU has none of that iirc). I think NVLink is a decent comparison of that purpose/design.

Now running a whole infra on RAM, not just a DB, that makes more sense on paper, and I guess that's what devs do daily with e.g. test environments, like a bunch of containers over a ton of RAM. At a small enough scale, upgrading storage tier makes sense as cost becomes negligible.

For a business / at scale, short of extremely specific applications where you'd indeed have not just a DB but whatever calls it also on RAM --- and remembering that this is not economical to serve "more" users or "faster", since you'd scale horizontally for that --- the use-case or endgame of whatever this DB serves should have that speed as a hard requirement. Likely to be 'one' monster itself, like, a supercomputer? Assembling deep learning datasets from real-time feeds on-the-fly? Skynet? Big brother? :) Jokes aside, one needs a beast to feed that'll take no less to justify a 7x more expensive RAM-based anything at scale.

Normal folks, I think we'll do with caching the hell out of our data for cheap, for now at least. Until RAM becomes abundant and CPU/storage/IO extremely expensive by comparison. (was RAM ever abundant? I can't seem to remember a time when I could just buy without counting, unlike storage or FLOPS relatively to everything else).

Re:I/O Is Faster Than CPU – Let’s Partition Resources and El... by gambler on Friday May 03, 2019 @03:03PM (#19821276)
I missed the part about "petabytes a day". I'm curious, which companies stores petabytes of data a day in a single database?
Re:I/O Is Faster Than CPU – Let’s Partition Resources and El... by PeterCorless on Friday May 03, 2019 @03:22PM (#19821425)
Facebook was hitting 4 petabytes a day of user data back in 2014. Back then, there were only a handful of giants needing that. Today, multiple systems are now being scaled to handle that sort of data volume. Think automotive fleet systems and other IIoT applications. Mobile networks (and security systems for them) managing tens of millions of devices.

https://research.fb.com/facebook-s-top-open-data-problems/

Re:I/O Is Faster Than CPU – Let’s Partition Resources and El... by cachemiss on Saturday May 04, 2019 @06:48AM (#19825661)
Generally these tend to be systems that work with machine generated data, my experience is with sensor data generated by automobiles (automated car efforts).

Naive solutions tend to either summarize the data, store as logs and then run batch processes to index in some form (or leave unindexed and just brute force the computation), or limit the incoming data rate to whatever could be indexed.

These can work for some use cases, but make it very difficult to operationalize these data sources (i.e use them to make real-timeish decisions).

Even human generated data sources (fb / twitter etc.) can generate something close to that data rate.

Re:I/O Is Faster Than CPU – Let’s Partition Resources and El... by dorlaor on Friday May 03, 2019 @01:48PM (#19820574)
The advantage of in-memory it's also its biggest disadvantage - it's costly. NVMe can serve almost as fast as ram and is 100x cheaper. Scylla offers single digit msec (usually 1msec) 99% latency and way more cost effective
Re:I/O Is Faster Than CPU – Let’s Partition Resources and El... by fulafel on Saturday May 04, 2019 @07:29AM (#19825811)
Most databases are small though.
Re:I/O Is Faster Than CPU – Let’s Partition Resources and El... by AtlasBarfed on Sunday May 05, 2019 @12:29AM (#19831169)
And don't need performance, so clearly we aren't talking about an Access database on a laptop.
Re:I/O Is Faster Than CPU – Let’s Partition Resources and El... by stallmanifold on Friday May 03, 2019 @09:24PM (#19823680)
In what ways do the database architecture change when one discards the assumption that I/O is the bottleneck? Does it obviate the relational model? I always found the relational model to fit working with data sets very well since it's nice and declarative. Does that turn out to be a bottlneck assuming fast I/O?
Re:I/O Is Faster Than CPU – Let’s Partition Resources and El... by garmaine on Friday May 03, 2019 @11:51PM (#19824330)
Why would the model be affected?
Re:I/O Is Faster Than CPU – Let’s Partition Resources and El... by aloer on Friday May 03, 2019 @11:42AM (#19819391)
What was the situation like before SSDs? Were the fastest hard drives at the time (15k rpm?) faster than the fastest CPUs?
Re:I/O Is Faster Than CPU – Let’s Partition Resources and El... by insulanus on Friday May 03, 2019 @12:01PM (#19819568)
Let's take a look at the throughput of a server hard disk vs. a typical server CPU:

https://serverfault.com/questions/190451/what-is-the-through...

https://www.anandtech.com/show/9185/intel-xeon-d-review-perf...

Now, that 45.8 GB/sec can't usually be fully utilized by the application, but it's a lot higher than the 200MB/sec of the server hard drive.

There's also the complication of RAID, max memory fetch rate of a single core, etc. And the fact that the database has to do some processing besides moving data around.

But it seems to me that server CPU bandwidth of the last generation is significantly higher than spinning disks.

Re:I/O Is Faster Than CPU – Let’s Partition Resources and El... by blihp on Friday May 03, 2019 @12:55PM (#19820078)
Individually no, collectively (i.e. storage arrays) yes.
Re:I/O Is Faster Than CPU – Let’s Partition Resources and El... by loeg on Friday May 03, 2019 @01:26PM (#19820343)
Sort of. Intel's server parts top out at on the order of 48 PCIe 3 lanes (Skylake-SP). Those parts have 6-channel DDR4 memory (rated to DDR4-2666), giving a theoretical DRAM throughput limit of about 128 GB/s.

Meanwhile, a PCIe 3.0 lane has a theoretical throughput limit of about 985MB/s; 48 lanes makes 47 GB/s.

Both are theoretical numbers and in practice will be lower, and you're right that it doesn't give you a lot of free CPU to do any kind of processing on the data, but it seems like the CPU can keep up (as long as Intel continues to have an anemic number of PCIe lanes and until PCIe 4 comes along).

(FWIW, on a dual-socket Skylake-SP, Anandtech only achieved 122 GB/s (of theoretical 256 GB/s DRAM maximum). But Intel claims the dual-socket can reach 199 GB/s with an AVX-512 workload.[1] Scaling both of these numbers down by a factor of two gives a very crude estimate for single-socket DRAM bandwidth on a conventional workload (61 GB/s) and AVX-512 (99 GB/s).)

Meanwhile, AMD's Zen server parts have more than double the PCIe lanes but only a few more memory channels, so I expect you're correct there — huge/fast PCIe arrays could be bottlenecked on DRAM on that platform.

[1]: https://www.anandtech.com/show/11544/intel-skylake-ep-vs-amd...

Re:I/O Is Faster Than CPU – Let’s Partition Resources and El... by blihp on Sunday May 05, 2019 @04:24AM (#19831782)
The question was about spinning rust drives ('before SSDs') and the corresponding CPUs that were available at the same time.