На высоком уровне они похожи.
- В MongoDB у вас есть несколько «наборов реплик», и вы «разделяете» данные между этими наборами для горизонтальной масштабируемости.
- В SQL Server вы используете «репликацию» на разных серверах, а затем предоставляете «секционированное представление» на реплицируемых серверах для обеспечения горизонтальной масштабируемости.
Большие различия в реализации и самих технологиях. Например, SQL Server поддерживает объединения и фактически имеет некоторую логику для объединения между серверами. MongoDB не имеет понятия о соединении и не предоставляет ничего из этой логики.
Обе системы используют некоторую форму ключа разделения для разделения данных. SQL Server требует логики уровня приложения для отправки запросов на лучший узел ( colocating ). MongoDB предоставляет программу-маршрутизатор mongos
, которая будет правильно маршрутизировать сегментированные запросы без дополнительной логики приложения.
Существует также проблема балансировки. MongoDB обеспечивает автоматическую балансировку, поэтому, если один фрагмент будет перегружен данными, некоторые из этих данных будут отправлены на другие узлы. В SQL Server вы должны вручную определить разделы и серверы, на которых они находятся.
Очевидно, что есть много других деталей, но это похоже на разницу в уровне.