MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Низ за връзка в MongoDB (с примери)

За да могат приложенията да се свържат със сървър на база данни, те трябва да използват низ за връзка, който е израз, който съдържа всички необходими параметри. Низовете за връзка предоставят екземпляра на сървъра, името на базата данни, подробностите за удостоверяване и други параметри за взаимодействие със сървъра на базата данни.

Формати за низове за връзка

Всеки от дадените методи ще настрои низ за връзка на MongoDB. Форматът за свързване на списъка със начални източници на DNS или формат на стандартния низ за връзка.

Стандартният формат за свързване на низове

Има три основни типа внедряване на MongoDB:самостоятелен, набор от реплики и разчленен клъстер, всички от които са описани тук.

Това е типичният начин за присъединяване към URI.

mongodb://[username:password@]host1[:port1][,...hostN[:portN]][/[defaultauthdb][?опции]]

Примери:

Самостоятелен
mongodb://mongodb0.example.com:27017
Самостоятелен, който налага контрол на достъпа:
mongodb://myDBReader:D1fficultP%[email protected]:27017/?authSource=admin
Набор реплики
mongodb://mongodb0.example.com:27017,mongodb1.example.com:27017,mongodb2.example.com:27017/?replicaSet=myRepl
Набор от реплики, който налага контрол на достъпа:
mongodb://myDBReader:D1fficultP%[email protected]:27017,mongodb1.example.com:27017,mongodb2.example.com:27017/?authSource=admin&repllicaSet=my 
Разчленен клъстер
mongodb://mongos0.example.com:27017,mongos1.example.com:27017,mongos2.example.com:27017
Разделен клъстер, който налага контрол на достъпа:
mongodb://myDBReader:D1fficultP%[email protected]:27017,mongos1.example.com:27017,mongos2.example.com:27017/?authSource=admin

Компоненти на низ за връзка

Компоненти на стандартния низ за връзка с URI:

  1. mongodb:// – Необходим префикс, указващ стандартен низ за връзка.
  2. потребителско име:парола@ – Удостоверенията за удостоверяване не са задължителни. Ако е даден authSource, клиентът ще се опита да удостовери потребителя. Без да посочва authSource, клиентът ще провери потребителя срещу defaultauthdb. Освен това се използва администраторската база данни, ако defaultauthdb не е дадена.
  3. хост[:порт] – Хостът (и по избор номера на порта), на който работи mongod екземплярът (или mongos екземпляр в случай на разчленен клъстер). Можете да посочите име на хост, IP адрес или сокет в UNIX домейн. Посочете броя на хостовете, необходими за вашата топология на разпространение:
    В случай на един екземпляр на mongod, дайте името на хоста на екземпляра на mongod.
    Предоставете името(ата) на посочения(ите) екземпляр(и) на mongod в настройките на набора от реплики за набор от реплики.
    Посочете името(ата) на хоста(ите) на mongos екземпляр за разделен клъстер. Без да се посочва номер на порт, се използва общият порт 27017.
  4. /defaultauthdb – По избор. Ако низът за свързване съдържа потребителско име:парола@ идентификационни данни, но опцията authSource не е предоставена, се използва базата данни за удостоверяване. Клиентът използва администраторската база данни, за да удостовери потребителя, ако не са дадени и authSource, и defaultauthdb.
  5. ?<опции> – По избор. Специфичните за връзката параметри са посочени в двойки име>=стойност> в низа на заявката. Списъкът с наличните опции може да се види в секцията Опции за низове за свързване. Наклонена черта (/) трябва да бъде включена между хоста и въпросителния знак (?), за да започне низа с опции, ако в низа за връзка не е посочена база данни.

Формат на връзката за списъка със начални елементи на DNS

Има и изграден от DNS начален списък за MongoDB връзки. Използването на DNS за създаване на списък с достъпни сървъри предлага повече гъвкавост при внедряване и възможност за превключване на сървъри на цикли без повторно конфигуриране на клиенти.

Използвайте префикса mongodb+srv вместо обикновения префикс на низ за връзка на MongoDB, за да използвате DNS списъка с начални елементи. За да кажете на потребителя, че следващото име на хост е DNS SRV запис, използвайте префикса +srv. След това mongosh или драйверът ще запита системата за имена на домейни (DNS), за да открие кои хостове изпълняват екземплярите на mongod.

Забележка: Опцията tls (или съответната ssl) е настроена на true, ако се използва променливата на низа за свързване +srv. Като посочите изрично опцията tls като false в низа на заявката, можете да замените това поведение и вместо това да използвате tls=false.

Низовете за свързване с начален списък на DNS често изглеждат като следния пример:

mongodb+srv://server.example.com/

Настройката на DNS може да изглежда така:

Запис                            TTL   Клас    Порт с приоритетно тегло  Target_mongodb._tcp.server.example.com. 86400 IN SRV   0        5      27317 mongodb1.example.com._mongodb._tcp.server.example.com. 86400 IN SRV   0        5      27017 mongodb2.example.com.

Свързването с членове на началния списък дава на клиентите достъп до директория с други членове на набора от реплики, за да установят връзка. Хостът може да създаде списък със сървъри, различен от началния списък, тъй като клиентите обикновено използват DNS псевдоними в своите начални списъци. Членовете на набора от реплики могат да бъдат достъпни само чрез техните имена на хостове; следователно, ако това се случи, потребителите ще използват имената на хостове, дадени от репликацията, а не тези, посочени в началния списък.

Забележка: SRV записите, предоставени от посоченото име на хост, трябва да имат същия родителски домейн (example.com) като самото име на хост. Няма да ви бъде разрешено да се свържете, ако родителските домейни и имената на хостове не съвпадат.

Освен това низовете за свързване на DNS началния списък ви позволяват да предоставите параметри като част от URL по същия начин, както правят обикновените. Можете също да използвате TXT запис, за да посочите следните настройки, когато използвате низ за свързване на DNS начален списък:

authSourcereplicaSet

Само един TXT запис може да бъде посочен за всеки екземпляр на mongod. Клиентът ще върне грешка, ако DNS има множество TXT записи или ако TXT записът съдържа атрибут, различен от replicaSet или authSource.

TXT записът за server.example.com би изглеждал така:

Запис              TTL   Class    Textserver.example.com. 86400 В TXT   "replicaSet=mySet&authSource=authDB"

Този низ за връзка се генерира от записите на DNS SRV, както и настройките на TXT запис, както следва:

mongodb://mongodb1.example.com:27317,mongodb2.example.com:27017/?replicaSet=mySet&authSource=authDB

Изборът на TXT запис може да бъде отменен чрез предоставяне на параметъра на низа на заявката на URL адреса. Низът на заявката в следния сценарий отменя опцията authSource, зададена в TXT записа на DNS записа.

mongodb+srv://server.example.com/?connectTimeoutMS=300000&authSource=aDifferentAuthDB

Използвайки отмяната на authSource, типичният низ за връзка ще изглежда така:

mongodb://mongodb1.example.com:27317,mongodb2.example.com:27017/?connectTimeoutMS=300000&replicaSet=mySet&authSource=aDifferentAuthDB

Забележка: Ако името на хоста, посочено в низа за връзка, няма DNS записи, свързани с него, параметърът mongodb+srv ще се провали. Като последна забележка, когато се използва модификацията на низа на връзката +srv, опцията за използване на TLS (или еквивалентната SSL защита) е зададена на true за връзката. Като посочите изрично опцията tls като false в низа на заявката, можете да замените това поведение и вместо това да използвате tls=false.

Вземете своя низ за връзка с MongoDB

Ще ви е необходим URI низ, за ​​да се свържете с MongoDB. Ако се свържете с внедряване на MongoDB, използвайки mongo shell, Compass или драйверите MongoDB, ще бъдете помолени за URI (Униформен идентификатор на ресурс).

Предполага се, че вече сте настроили удостоверяване в MongoDB и сте генерирали потребителско име и парола за права за четене и запис в база данни на MongoDB, когато използвате предоставения URI низ.

В този случай можете да използвате потребителското име и паролата, които сте създали за ролята readWriteAnyDatabase както и името на базата данни на администратор във вашия низ за връзка, за да се свържете с MongoDB.

Опции за низа за връзка

Този раздел обяснява различните начини, по които можете да се свържете с интернет.

  1. Във формата на двойка име=стойност са налични опции за свързване.
  2. Когато се използва драйвер, името на опцията е независимо от главните букви.
  3. Името на опцията е независимо от главните букви, когато се използва mongosh или традиционната mongo shell (версия 4.2 или по-нова).
  4. Името на опцията е чувствително към малките букви, когато използвате версия 4.0 или по-стара наследена mongo shell.
  5. Регистрът никога не е проблем при показването на стойността.

Буквата амперсанд (&) може да разделя избори, като например име1=стойност1&име2=стойност2. Параметрите ReplicaSet и connectTimeoutMS са включени в следната връзка:

mongodb://db1.example.net:27017,db2.example.net:2500/?replicaSet=test&connectTimeoutMS=300000

Забележка: Драйверите вече приемат точки и запетая (;) като разделители на опции, за да запазят съвместимостта с по-стар софтуер.

Примери за низове за връзка

Ще намерите примери за URI за популярни точки на свързване в примерите по-долу.

Изпълнете локално сървъра на базата данни

Портът по подразбиране на локален сървър на база данни може да се използва за установяване на връзка със следната команда:

mongodb://localhost
Административна база данни

За да влезете в администраторската база данни като foss с парола fosslinux, трябва да се следват следните команди:

mongodb://foss:fosslinux@localhost
База данни от записи

Свързване и влизане в базата данни със записи с паролата fosslinux като системен администратор.

mongodb://foss:fosslinux@localhost/records
Сокети за домейни в UNIX

Когато се свързвате към UNIX домейн сокет, използвайте шифрован URL низ за връзка.

MongoDB се свързва към крайна точка на UNIX домейн със следния път:

mongodb://%2Ftmp%2Fmongodb-27017.sock

Забележка: всички драйвери не поддържат UNIX домейн сокети. За да научите повече за вашия драйвер, отидете в раздела Документация на драйвера.

Комплект реплика с потребители на различни машини

По-долу е дадена връзка към двучленна реплика, набор на db1.example.net и db2.example.net:

mongodb://db1.example.net,db2.example.com/?replicaSet=test

Забележка: Екземплярът(ите) на mongod, предоставен(и) в конфигурацията на набора от реплики, трябва да бъде указан за набор от реплики.

Набор от реплики с потребители на локален хост

Портове 27017, 27018 и 27019 се използват за установяване на връзка с набор от реплика, работещ на локален хост:

mongodb://localhost,localhost:27018,localhost:27019/?replicaSet=test
Прочетете комплекта реплики за разпространение

Свързването с тричленен набор от реплики и разпространението на четене до вторичните членове включва метода, изброен по-долу:

mongodb://example1.com,example2.com,example3.com/?replicaSet=test&readPreference=secondary
Комплект реплики на загриженост за високо ниво на запис

Свързването към набор от реплики, съдържащ загриженост за запис и време за изчакване от две секунди, докато се изчаква репликация между повечето от гласоподавателите, носещи данни, се осъществява с помощта на тази конфигурация:

mongodb://example1.com,example2.com,example3.com/?replicaSet=test&w=majority&wtimeoutMS=2000
Споделен клъстер

Възможно е да се свържете с разделен клъстер с множество екземпляри, като използвате следното:

mongodb://router1.example.com:27017,router2.example2.com:27017,router3.example3.com:27017/
MongoDB Atlas Cluster

Следното установява връзка с MongoDB Atlas клъстер, използвайки AWS IAM идентификационни данни за удостоверяване:

mongosh 'mongodb+srv://:@cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS'

Този пример показва как да използвате метода за удостоверяване MONGODB-AWS и $external authSource за свързване с Atlas чрез AWS IAM идентификационни данни.

Стойността на AWS SESSION TOKEN authMechanismProperties трябва да бъде предоставена, ако използвате маркер за сесия на AWS, както следва:

mongosh 'mongodb+srv://:@cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS&authMechanismProperties=AWS_SESSION_TOKEN:>'aws сесия 

Забележка: Стига идентификационният номер на ключа за достъп на AWS или секретният ключ за достъп да съдържа някой от следните знаци:(: / ? # [ ] @ ), трябва да използвате процентно кодиране, за да ги кодирате.

Можете също да използвате обикновени променливи на средата на AWS IAM, за да посочите тези идентификационни данни на вашата платформа. Когато се използва удостоверяване на MONGODB-AWS, mongosh проверява и установява дали присъстват следните променливи на средата:

  • AWS_ACCESS_KEY_ID
  • AWS_SECRET_ACCESS_KEY
  • AWS_SESSION_TOKEN

Низът за връзка не трябва да включва тези идентификационни данни, ако е конфигуриран.

В обвивката на bash следните променливи са зададени в следния пример:

експортиране на AWS_ACCESS_KEY_ID=''експортиране на AWS_SECRET_ACCESS_KEY=''експортиране на AWS_SESSION_TOKEN=''

Синтаксисът за установяване на променливи на средата ще се различава в други обвивки, така че имайте предвид това. За допълнителна информация отидете в документацията на вашата платформа.

Следната команда ще потвърди дали определени променливи на средата са зададени или не:

env | grep AWS

Следният код показва как да установите връзка с MongoDB Atlas клъстер с помощта на променливи, изброени по-долу:

mongosh 'mongodb+srv://cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS'

Това е всичко, което трябва да знаете за низовете за връзка в MongoDB. Надяваме се, че ви е било полезно ръководството за статията. Ако да, моля, оставете забележка в секцията за коментари. Благодаря за четенето.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Съхранявайте изображение в MongoDB с помощта на Node.js/Express и Mongoose

  2. Високопроизводителни MongoDB клъстери в Azure

  3. Използвайте MongoEngine и PyMongo заедно

  4. Как да проектирате индекс на масив след размотаване на масив с MongoDB рамка за агрегиране

  5. Накарайте Spark, Python и MongoDB да работят заедно