As stated in the documentation there are 3 types of storage in the Ethereum VM (EVM) The storage, the memory, and the stack
Each account has a data area called storage, which is persistent between function calls and transactions. Storage is a key-value store that maps 256-bit words to 256-bit words. It is not possible to enumerate storage from within a contract and it is comparatively costly to read, and even more to modify storage. A contract can neither read nor write to any storage apart from its own.
Let's say I want to store key-values pairs of millions of records e.g cars and owners, does this mean it will be extremely costly to do so ? Or the concept of storage is totally different of what I'm looking for ?