You can separate the concepts of a logical database and a physical databases.
Imagine if you had an array of data too large for a single machine
but you still want to treat it as a single array.
So the logical Array can contain elements 1 through L
but suppose each machine has enough memory for M elements.
The first machine can have elements [1, M] the next machine [M+1,2M] next [2M + 1,3M] etc.. etc.. (but from the machines perspective they are all local elements 1 through M)
Leaving ELI5 territory (but you mentioned you are a developer):
So to access the LogicalElement(Y) you need to access machine #(Y/M integer division) and access its LocalElement (Y%M) (modulo)
so suppose each machine could store 100 million elements of a 1000 million data array. And you wanted to access element number 231 of the 1000 elements.
231 / 100 = Machine #2 , 231 modulo 100 = 31
So the 231 millionth element is located on server #2 on its 31th million element.
The main concept I was demonstrating is you can keep thinks separated logically and physically for performance things would be done differently.
Since you mentioned you are a developer take a look at the lecture videos in this course it will help you catch up to these latest techniques
Parallel, Concurrent, and Distributed Programming in Java Specialization
(this is in java if you want to do the whole courses , if you don't have experience with java just watch the theoretical videos only )
BTW it should be free to access the videos if you don't want to do the course for credit.