3 ms·
I think this is enormously exacerbated by roundtripping. Even if it's just 2ms away, and you go back and forth a few dozen times, you are doing a ton of waiting
by joshu 15y ago
I think this is enormously exacerbated by roundtripping. Even if it's just 2ms away, and you go back and forth a few dozen times, you are doing a ton of waiting.
This is one of the problem with joinless NoSQL databases, as well, since you HAVE to roundtrip to join.
- randomdata 15y agoYou don't have to. For instance, in CouchDB, you can use view collation to retrieve related documents in a single request.
- joshu 15y agoThat sounds like a join by another name :)
- randomdata 15y agoIf you use the term loosely, I suppose so. :) But you're not actually joining any data. You return one document, and then exploit the properties of sorting to return the related document(s) next in the collection. In SQL-speak, each relation comes as a distinct row and are only connected by the order in which the rows are returned. There is a writeup on the specifics here, if you are curious: http://wiki.apache.org/couchdb/View_collation http://wiki.apache.org/couchdb/View_collation It is a pretty clever trick that can save you a round trip to the DB, but doesn't have nearly the power that a real join does.
- einhverfr 15y agoyou can do the same in PostgreSQL with joins. For example: select i.* , array_agg(ROW(l.*)::text) from invoice i join invoice_line l ON i.id = l.invoice_id where i.id = 1023; This returns a single row for invoice, along with an array of tuples representation of all invoice lines. You could also use casts and stored procedure languages to convert to xml or whatever if you want.