I'm wondering if it's possible to generate a list of the top Ethereum holders, of the Public Ethereum MainNet, using Geth or Web3, but I'm not sure this is even feasible. Is there a way to do it? Can we interface with the database directly? Do we have to make a specialized script iterating through each block and comparing the inputs minus outputs?
You can take this information directly from http://etherscan.io/accounts. You can read the html output programmatically and parse it.
Actually, EtherScan.io do lots of work for this. I recommend to take it as is. If you want to do something similar yourself, I think you have to query all all mining happen and all Ether transactions made and save it to off-chain database then you can query it.
Here is the accounts list from EtherScan.io:
Additionally, you can check for Tokens' Holders:
You can also have a graph for each Token's holders. For example you can check the top 500 of LEV (LeverJ): https://etherscan.io/token/tokenholderchart/0x0f4ca92660efad97a9a70cb0fe969c755439772c?range=500
Presto-ethereum will enable you to query the blockchain using SQL