News for hackers. Stuff that matters.
Re:How we spent $30k in Firebase in less than 72 hours by paradite on Wednesday August 01, 2018 @10:00PM (#17668724)
So it's a classic N+1 query?
Re:How we spent $30k in Firebase in less than 72 hours by alexpi on Thursday August 02, 2018 @04:56AM (#17670120)
It's more like (in good old RDBMS world) 'SELECT * FROM payments' and calculate sum on client vs 'SELECT SUM(amount) FROM payments WHERE some_id = ?'

though they already had this sum precalculated

Re:How we spent $30k in Firebase in less than 72 hours by jasonkester on Thursday August 02, 2018 @10:14AM (#17671513)
That would be more forgivable. This is:

  SELECT * FROM payments where paymentID = 1
  SELECT * FROM payments where paymentID = 2
  SELECT * FROM payments where paymentID = 3
  ...
  SELECT * FROM payments where paymentID = 14986
Each of those in its own API request over the wire, then sum them on the client.
Re:How we spent $30k in Firebase in less than 72 hours by bsaul on Thursday August 02, 2018 @04:32AM (#17670043)
Not really. N+1 is about « to many » relationships. You would need at least 2 collections to run into that problem.

In sql equivalent, what happened would be more like doing a full table scan on each query instead of using an index ( and not even that, because pre-computing a total isn’t really like an index)

This kind of « account balance » problems are typical of the problems where transactions are really useful. But also historically the kind of problem where nosql techs do a poor job ( they’re more built with « eventual consistency » in mind than atomic or transactional behaviors)