How do ethereum nodes find all transactions associated with a certain address? Would the node have to iterate backwards through each block in the chain looking for transactions to or from the address? Or is transaction data stored in an easier to retrieve manner?
When you first start up a node, it will index all nodes from genesis onwards.
As part of this indexing process, it maintains a database of addresses and balances, among other things in this index, so that when it needs to know the balance of an address it will not have to go searching for it.