A map-style dataset in Pytorch has the  __getitem__()  and  __len__()  and iterable-style datasets has  __iter__()  protocol. If we use map-style, we can access the data with  dataset[idx]  which is great, however with the iterable dataset we can’t.
My question is why this distinction was necessary? What makes the data random read so expensive or even improbable?