При использовании репликации для вашей базы данных у вас есть основной узел и несколько вторичных серверов.Для обеспечения согласованности рекомендуется всегда читать с основного узла, верно?
Ответы - да и нет.Да, обычно вы читаете с первичного узла, но если вы читаете с вторичного узла, это немного задерживает, но результат почти такой же, как у первичного
Нет. Вам не нужно проверять, где находится первичный узел для чтения, просто укажитеreplicaset в строке подключения и забудьте о replicaset.Просто работайте с этим так же, как с одним db
Теперь мои вопросы: при использовании разбиения с использованием шардинга теперь это означает, что каждый шард имеет свой собственный основной узел?
Да
Таким образом, при чтении информации из документа с идентификатором 130 сначала необходимо выяснить, где находится первичный узел из сегмента 2?
Нет, когда вы подключаетесь к кластеру, вы должны подключиться через mongos https://docs.mongodb.com/manual/reference/program/mongos/ Он сделает все за вас, найдя, какой сегмент содержит ваши данные, основной узел и т. Д. С mongos вы работаете с кластером, какsingle db.
Единственное, что вам следует позаботиться о производительности, которую вы должны прочитать и понять о сборе осколков и ключе осколка https://docs.mongodb.com/manual/core/sharding-shard-key/
Например: r1 имеет основной узел для1-125 и среднее для 126-250.У r2 есть основной узел на 126-250 и второстепенный на 1-125.Это правильно?
-> Неверно, данные разделены ключом шарда, подробнее см. Выше.В этом случае, если вы используете идентификатор (1 - 250) для ключа шарда.
- r1 будет содержать от 1 до 125 как на первичном, так и на вторичном (вторичный является резервным для первичного, который первичный будет клонирован на вторичный)
- r2 будет содержать 126 - 250 в обоих первичныхи вторичные тоже (для детализации r2 первичные содержат 126 - 250, вторичные тоже содержат 126 - 250. Вторичный узел является зеркалом первичного узла)
Каждая реплика все еще хранит полную информацию базы данных?
Нет, только основной шард содержит полную информацию о базе данных (https://docs.mongodb.com/manual/core/sharded-cluster-shards/#primary-shard) Каждый набор реплик содержит часть коллекции шардов, которая определяется ключом шарда. Коллекция шардов - это большая таблица, на которую вы хотите разделитьнесколько машин для улучшения производительности