With today's technology, with governments and their agencies with nearly unlimited funds, could they not generate every address and key. store this in a distributed database (however many nodes) and search for whatever key they need. Surely with AWS, Azure, GoogleCloud companies could have the money to run the required infrastructure. or is the number of keys so large that even with 1 million servers with database nodes this could not be done?
You already have some very good answers and examples, but I've got another one to specifically answer your question of "could they not . . . store this in a distributed database".
The maximum number of possible version legacy bitcoin addresses (those starting with a 1) is 2^160 or a bit less than 1.5 X 10
48.
Meanwhile, most estimates of the number of atoms in the Earth are a bit less than 1.5 X 10
50.
This means that if you could find a way to store both an entire address and its key on a single atom, and you were to eliminate all the air, water, magma, people, buildings, mountains, animals, plants, crust, mantle, core, etc turning it all into nothing but a single huge Earth-sized database, you still wouldn't have enough atoms to store all those addresses and keys.
You'd need more than 100 Earth's worth of atoms to store it all.
An actual real-world database is going to need much more than a single atom to hold enough information to store both an address AND a key. Therefore you'd need a LOT more than 100 Earth's worth of atoms to create your "All Keys database".
Mathematical weaknesses may be discovered some day in ECDSA, RIPEMD160, and SHA256, but brute-forcing or creating a database of addresses and keys just aren't going to be a concern. Ever.
Can you elaborate on your math? Why would it take more than 100 Earth's worth of atoms? If, 2^160 < 1.5 x 10^50