Data storage within hyperledger
the blockchain data, aka the ledger, is stored as a physical file. it contains linked blocks, each block consisting of a set of transactions. Each state change is stored there.
By contrast, the world state only contains the current state of every asset as that's what applications need.
The world state is implemented as a database, couchdb being a good option, there is a simpler one available but that one offers much less in terms of querying capability.
Of course what this means is that the world state can be easily recreated from the ledger at any point in time.
when a new peer gets added to a channel, its own world state is created from the ledger.
a good read describing all this is here: https://hyperledger-fabric.readthedocs.io/en/release-1.3/ledger/ledger.html
To clarify further, a ledger does not literally store business objects but it stores important information/facts about those objects -so history of these important facts is in ledger and current value of this important fact is in world state.So the actual object (the one about which facts are stored in ledger and world state) lives in an external datastore - could be called sort of 'off-chain' data. But the information we store in the ledger allows us to know facts about it and locate it as well. Hope this helps.