As a point of nit picky correctness, the one thing to keep in mind is that the "relational" in "relational database" refers to a relation<http://en.wikipedia.org/wiki/Relation_(database)>or relation variable. Which is a table and not the relationship between the tables. The relationship between tables is a foreign key to humans and a "referential constraint" to academics.
Jeremiah Peschka Microsoft SQL Server MVP MCITP: Database Developer, DBA On Sat, Jan 22, 2011 at 8:46 PM, Eric Moritz <e...@themoritzfamily.com>wrote: > This is the best way for me to understand how to model data in Riak. Think > about the web. You always have a starting point. The starting point is an > URL. An URL is analogous to a key in Riak. A URL gets you a document on the > web, a key gets you a document in Riak. > > Now on the web page addressed by your URL has other URLs that serve as > pointers to other pages. > > In Riak, your starting doc(s) need to have references to other documents to > related them. > > In fact both systems, when defined this way are extremely relational. They > diverge from relational databases in the fact that there's tons of redundant > data and no built-in integrity checking. > > On the web this results in 404s and inconsistent titles in a tags. The > same problems happen in Riak; deleted keys could still be referenced by > other documents. It's all reminiscent of dangling pointers in my CS > classes. Just in that old C code I had to write, there was a lot of house > keeping to make sure integrity was preserved. > > Unlike the web, with Riak, we have complete control over what links to > what. Unfortunately it adds complexity to applications that otherwise would > be simple in an ACID DB. The benefit to this added complexity is AP. > > The folks who wrote the Dynamo paper state that, at least for them, this > added complexity when negligible because they were already designing their > services to compensate for integrity issues. Unfortunately for most of us, > our SQL databases let us ignore those issues. > > tl;dr think of Riak like the web. The web interrelates pages using URLs, we > have design our app's Riak docs similarly using key references. > On Jan 22, 2011 8:22 PM, "Sean Cribbs" <s...@basho.com> wrote: > > On Jan 22, 2011, at 4:15 PM, Thomas Burdick wrote: > > > >> * Why is key listing so slow? > > > > It is slow because, even if the keys are in RAM, you have to scan roughly > all of the keys in the cluster to get a listing for a single bucket. As a > certain person is fond of saying, "full table scan is full table scan". > There are ways to improve this, but without single-arbiters of state (and > points of failure) it is very costly. > > > >> * What do people do in the context of purely using riak to do what I > want, have a big set of keys to iterate over? > > > > As others have said so eloquently, they don't, they use something else. > Or they try to minimize how frequently they do it. Part of the current > revolution in data storage is about realizing that no one tool is going to > completely fit your needs, and that that's good and right. Anyone who tells > you otherwise is selling you a bill of goods. > > > > To understand why listing keys is difficult, you have to understand > Riak's (and Dynamo's) original design motivations: > > > > * To be basically available at all times for reads and writes, which in > turn means to be tolerant of machine and network failures. > > * To provide low-latency random access to large data sets. (Note I didn't > say an entire data set.) > > * To scale linearly with minimal operational complexity. > > > > Everything has tradeoffs - these are the ones we chose with Riak. Now, we > (Basho) are actively trying to create ways to make discovering your data > easier (key-filters are one of them, as Justin mentioned we're discussing > counters and indices), but the majority of people who use Riak have ways of > discovering or knowing keys ahead of time. If that's not your case, you > should look into other solutions; some good ones have been mentioned in this > thread. That said, we hear your pain and are working hard to improve > usability while maintaining the properties discussed above. > > > > Cheers, > > > > Sean Cribbs <s...@basho.com> > > Developer Advocate > > Basho Technologies, Inc. > > http://basho.com/ > > > > > > _______________________________________________ > > riak-users mailing list > > riak-users@lists.basho.com > > http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com > > _______________________________________________ > riak-users mailing list > riak-users@lists.basho.com > http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com > >
_______________________________________________ riak-users mailing list riak-users@lists.basho.com http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com