Я создаю веб-проект MEAN как свое хобби. У меня есть два mongoDB, один находится в Японии, а другой - в Китае. Могу ли я настроить приложение для использования разных mongoDB на основе местоположения? Например, если пользователь получает доступ из Китая, то приложение должно иметь возможность выбрать mongoDB, расположенную в Китае. Есть какой-либо способ сделать это?Как автоматически выбрать mongodb на основе местоположения?
ответ
Это может быть достигнут с помощью tag based sharding or tag aware sharding. В основном, он работает следующим образом:
- У вас есть ценность в ваших документах, которые означают, что этот конкретный документ принадлежит вашему китайскому или вашему японскому набору данных, например.
location: 'CHN'
илиlocation: 'JPN'
- Вы создали осколочный кластер, где один осколок находится в центре обработки данных в Китае, а другой находится в Японии.
- Вы assign tags to each shard. В вашем случае это будет иметь смысл помечать китайский осколок с
CHN
и японским осколком сJPN
Теперь вы можете настроить осколки, что японский осколок должен содержать все документы с
location: 'JPN'
и китайским осколок, чтобы держать все документы держать все документы сlocation: CHN
с присвоения этих значений к соответствующим помечено осколками:sh.addTagRange ("database.collcetion", {местоположение: "ЧН"}, {местоположение: "ЧН"}, "ЧН") sh.addTagRange ("database.collcetion", {location: "JPN"}, {location: "JPN"}, "JPN")
Используйте местоположение в качестве ключа осколка.
- Теперь вы можете использовать единую базу данных, и данные будут автоматически распределены географически, а запросы вашего приложения всегда будут направляться в географически соответствующий центр обработки данных.
О, ладно. На самом деле это вопрос вне темы (хорошо ответ на вопрос), но я думаю, что ущерб уже был нанесен. +1 –
Мысленно подумал, что я должен ответить на него, но мой подход заключался в том, что программист задал себе вопрос с проблемой, которая на самом деле не его. Поэтому я ответил на это до такой степени, что ОП понимает, что эта проблема на самом деле не его, а его DBA. –
Согласовано. Кроме того, на этот вопрос уже был дан ответ, поэтому немного PITA для его миграции. Я полагаю, что единственное значение, добавленное здесь, - это отметить, что, хотя «осколки» возможны только с двумя серверами, это не рекомендуется. Но опять же, одиночные серверы не являются действительно мудрым выбором. В противном случае достаточно ясно. Пусть логика базы данных справится с этим и оставит код в покое. –
Не могли бы вы разместить часть кода, в котором вы отправляете данные MongoDB, так как вы должны были открыть два соединения.
Открыть два соединения, один будет MongoChina, другой MongoJapan.
Когда пользователь подключается, получает его адрес ip и выбирает, какое соединение использовать на основе этого.
псевдокод:
var MongoChina = //Connecting to the chinese mongo server,
MongoJapan = //Connecting to the japanese mongo server;
function isJapanese(ip) {
//Return true if IP is in japanese ip range
//http://www.nirsoft.net/countryip/jp.html
}
function isChinese(ip) {
//Return true if IP is in chinese ip range
//http://www.nirsoft.net/countryip/cn.html
}
on.('user_connecting', function (req, res) {
var ip = //Extract the user ip from the request;
if (isJapanese(ip)) {
getDataToSendToMongo(function (data) {
MongoJapan.send(data);
});
} else if (isChinese(ip)) {
getDataToSendToMongo(function (data) {
MongoChina.send(data);
});
} else {
//Do whatever you like
}
});
- 1. Как автоматически выбрать элемент выпадающего списка на основе текста элемента?
- 2. Как автоматически выбрать флажок на основе данных в angularjs?
- 3. приложение на основе местоположения
- 4. Как добавить автоматически предлагаемые местоположения?
- 5. Начало деятельности на основе местоположения
- 6. реализация приложения на основе местоположения
- 7. Показать содержимое на основе местоположения
- 8. Android: приложение на основе местоположения
- 9. Отладка приложения на основе местоположения
- 10. выбрать полную запись на основе уникального идентификатора mongodb
- 11. Напоминание/событие на основе местоположения Android?
- 12. Linq Всего на основе местоположения
- 13. Увеличение на основе сенсорного местоположения
- 14. Система кэширования на основе местоположения
- 15. Запись в файл на основе местоположения проекта
- 16. Как средние значения на основе близости местоположения
- 17. Как сделать поиск на основе местоположения
- 18. Как найти твиттер-тенденции на основе местоположения?
- 19. Как получить твиты только на основе местоположения?
- 20. Как выбрать файл автоматически?
- 21. Автоматически перечислять все папки местоположения на сервере
- 22. MongoDB + PHP как выбрать
- 23. MongoDB выбрать как?
- 24. Тревога на основе местоположения на Windows Phone
- 25. Как хранить и находить записи на основе местоположения?
- 26. Запрос на основе подсчета, времени и местоположения
- 27. Группа местоположения на карте на основе расстояния
- 28. Запрос на основе определения местоположения без обработки после переноса данных
- 29. Фильтрация уведомлений на основе местоположения на основе iOS
- 30. MongoDB найти на основе массива объектов
На самом деле есть гораздо лучший ответ на этот вопрос. Но, к сожалению, это не по теме, поскольку реальный ответ не является программным решением. –