MongoDB - Ovo je besplatna, otvoreni izvor, baza podataka orijentirana na dokumente napisana na C ++. Klasificirano kao NoSQL baze podataka, jer se ne temelji na tradicionalnoj strukturi relacijske baze podataka. Umjesto toga u MongoDB koriste se JSON-slični dokumenti s dinamičnim shemama. Sheme se mogu mijenjati u bilo koje prikladno vrijeme bez potrebe za instaliranjem nove baze podataka s ažuriranom shemom.
korist NoSQL Baza podataka ispred uobičajenih relacijskih baza podataka je da lako možete konfigurirati horizontalno skaliranje, umnožavanje i izoštravanje. MongoDB baze podataka često se koriste za pohranu dokumenata, testnih datoteka, poruka e-pošte itd..
U ovom ćemo članku razmotriti instalaciju MongoDB na poslužitelj sa CentOS 7 ili 8, izvršite osnovnu konfiguraciju, a također razmotrite mogućnosti optimizacije.
sadržaj:
- Povežite MongoDB skladište
- Instalirajte MongoDB na CentOS
- Osnovne MongoDB naredbe
- MongoDB konfiguracijska datoteka
- Optimizirajte MongoDB za bolje performanse
Povežite MongoDB skladište
MongoDB Ima vlastito spremište, odakle se izvodi instalacija. U standardnim spremištima paketa za instaliranje ovog poslužitelja baze podataka br. Stvorite datoteku za spremište i dodajte podatke da biste se povezali s njom:
# nano /etc/yum.repos.d/mongodb-org.repo
Sadržaj datoteke bit će sljedeći:
[mongodb-org-4.2] name = MongoDB Repository baseurl = https: //repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.2/x86_64/ gpgcheck = 1 omogućeno = 1 gpgkey = https: // www.mongodb.org/static/pgp/server-4.2.asc
U trenutku pisanja, najnovija verzija MongoDB u spremištu je bilo točno 4.2. Prije instalacije na vaš poslužitelj, idite na web lokaciju programera i provjerite trenutnu verziju.
Nakon što stvorite repo datoteku s opcijama spremišta, možete nastaviti s instalacijom paketa.
Instalirajte MongoDB na CentOS
Da biste instalirali potrebne pakete za rad MongoDB, pokrenite naredbu yum ili dnf (na CentOS 8):
# yum instalirajte mongodb-org -y
Kao i svaka druga usluga, MongoDB treba pokrenuti i dodati startup:
# systemctl start mongod
# systemctl omogućuju mongod
Da biste potvrdili da usluga mongod sluša na ispravnom priključku (prema zadanom TCP 27017), učinite:
# lsof -i: 27017
Pristup MongoDB usluzi možete otvoriti u valuti datoteka (ispod je primjer firewalld-a):
# firewall-cmd --add-port = 27017 / tcp - trajno
# firewall-cmd - ponovno učitavanje
Dnevnici usluge dostupni su u datoteci:
# rep -f /var/log/mongodb/mongod.log
Pri pokretanju MongoDB može se pojaviti upozorenje:
** UPOZORENJE: meka obruba preniska. ograničenja postavljena na 4096 procesa, 64000 datoteka. Broj procesa trebao bi biti najmanje 32000: 0,5 puta veći broj datoteka.
P.s. Nisam imao sličnu pogrešku, ali mreža se često susreće sa sličnim pitanjem i odlučio sam opisati njezino rješenje.
Da biste riješili problem, morate otvoriti datoteku /etc/security/limits.d/20-nproc.conf i povećati ograničenja:
# nano /etc/security/limits.d/20-nproc.conf
Na kraju datoteke dodajte:
mongod soft nproc 32000
Spremite datoteku i ponovno pokrenite mongod uslugu:
# systemctl ponovno pokrenite mongod
Za prijavu na konzolu MongoDB, uđi mongo:
[root @ server mongodb] # mongo
Verzija MongoDB ljuske v4.2.2 koja se povezuje na: mongodb: //127.0.0.1: 27017 /? Kompresori = onemogućeni & gssapiServiceName = mongodb Implicitna sesija: sesija "id": UUID ("f75bee8f-d71d-47fb-8728-6f67fb7a6982") MongoDB verzija poslužitelja: 4.2.2
Osnovne MongoDB naredbe
Razmotrite nekoliko MongoDB naredbi koje se mogu koristiti u mongo ljusci. Konkretno, stvorit ćemo bazu podataka, korisnika i pokazati nekoliko drugih korisnih naredbi.
Za stvaranje baze podataka u sustavu Windows MongoDB, trebate pokrenuti naredbu u DBMS konzoli:
> koristite buildcentos
Primijetili ste da je sličan onome koji se koristi u mysql / mariadb za ulazak u postojeću bazu podataka? MongoDB kao što se ispostavilo da je sve lakše.
Da biste potvrdili da se stvarno nalazimo u ovoj bazi podataka, učinite:
> db
No, postoji jedna nijansa, u stvari, nova baza podataka neće se stvoriti dok u nju ne spremite barem jedan dokument. Ako provjerimo postojeće baze podataka na globalnoj razini, vidjet ćemo da naša baza podataka nije na popisu:
> pokaži dbs
Izvršimo jednostavan upit koji će dokument spremiti u našu bazu podataka:
> db.new_collection.insert (some_key: "some_value")
Da biste izbrisali bazu podataka, morate biti u istoj bazi podataka u kojoj ćete izbrisati i izvršiti zahtjev:
> db.dropDatabase ()
Na primjer:
> koristite buildcentos
prebačen na db buildcentos
> db.dropDatabase ()
"ispušteno": "buildcentos", "ok": 1>
Nakon toga će se baza izbrisati:
> pokaži dbs
admin 0.000GB config 0.000GB lokalni 0.000GB>
Da biste stvorili novog korisnika s dozvolama za čitanje i pisanje za vašu bazu podataka, pokrenite sljedeći upit:
> db.createUser (
korisnik: "centos", pwd: "rewqrwe213213", uloge: [role: "readWrite", db: "buildcentos"])
Za popis korisnika pokrenite upit:
> db.getUsers ()
ili
> prikaži korisnike
Obje naredbe daju isti rezultat:
Da biste izbrisali korisnika:
> db.dropUser ('centos')
Nakon izvršenja naredbe, prilikom popisa korisnika, nećete je imati:
> db.dropUser ('centos')
istinski
> db.getUsers ()
MongoDB konfiguracijska datoteka
Kao i u bilo kojem DBMS-u, MongoDB nalazi se konfiguracijska datoteka smještena duž putanje /etc/mongod.conf. Razmotrite njegove glavne parametre:
- Blok SystemLog - odgovoran za prijavu. Minimalni parametri koji moraju biti navedeni u ovom bloku za prijavu na posao:
systemLog: odredište: file logAppend: true path: /var/log/mongodb/mongod.log
- Blok ProcessManagement - kontrolira proces u kojem se pokreće MongoDB: fork - pokreće demon u pozadini da bi baza podataka radila, zadana vrijednost je false pidFilePath - put do PID datoteke timeZoneInfo - označava put do datoteke za učitavanje vremenskih zona Primjer config:
processManagement: fork: true # fork i pokreće se u pozadini pidFilePath: /var/run/mongodb/mongod.pid # lokacija pidfile timeZoneInfo: / usr / share / zoneinfo
- blok neto - služi za kontrolu rada s mrežom:
port - označava broj porta na kojem će se pokrenuti mongod demon, prema zadanom priključku 27017
bindIp - ip adresa s koje možete pristupiti bazi podataka. Kao i kod mysql / mariadb, i ova je postavka radi sigurnosti kako bi se izbjegao pristup sa vanjskih poslužitelja. Ako ovdje navedete 127.0.0.1, veza će raditi samo lokalno.
maxIncomingConnections - broj istodobnih veza koje MongoDB može podnijeti. Ovaj parametar ne može premašiti sistemski parametar; zadana vrijednost je 65536
Primjer:neto: port: 27017 bindIp: 127.0.0.1
- blok sigurnosti - ovaj blok je odgovoran za sigurnost: autorizacija - ako je opcija omogućena, tada je potrebna autorizacija korisnika, a bez prijave i zaporke veza s postupkom koji zahtijeva da se ne uspostavi. Pogrešno onemogućeno. JavascriptEnabled - omogućite / onemogućite izvršavanje JavaScripta na strani poslužitelja.
- blok skladištenje - blok odgovoran za parametre pohrane baze podataka: dbPath - niz koji pokazuje na kojem će mjestu biti pohranjena baza podataka. / Data / dbjournal - ako je omogućeno, uključuje dnevnik dugovječnosti kako bi datoteke u bazi podataka ostale važeće i obnovljene.
pohrana: dbPath: / var / lib / mongo časopis: omogućeno: istina
Naprednije postavke možete naći u MongoDB dokumentaciji na službenom web mjestu..
Optimizirajte MongoDB za bolje performanse
koji MongoDB Djelovalo je dovoljno brzo i nije bilo problema, bilo je potrebno da se ispune određeni uvjeti:
- Koristite datotečni sustav XFS, umjesto sporijeg ext4(XFS koristi paralelni disk I / O, što značajno poboljšava performanse u odnosu na EXT4).
- Koristite brze SSD / NVME pogone na svojim poslužiteljima, umjesto sporijih HDD-ova.
- isključiti Prozirna ogromna stranica. Da biste onemogućili THP, dodajte naredbeni poziv u datoteku MongoDB jedinice:
# echo 'nikad' >> / sys / kernel / mm / transparent_hugepage / omogućeno
# echo 'nikad' >> / sys / kernel / mm / transparent_hugepage / defrag - Provjerite i postavite neograničene granice ako je potrebno:
-f (veličina datoteke): neograničeno -t (vrijeme CPU-a): neograničeno -v (virtualna memorija): neograničeno -n (otvorene datoteke): 32000 ili više -m (veličina memorije): neograničeno -u (procesi / teme): 32000 i još mnogo toga
- Pratite i potrošnju memorije na poslužitelju ako MongoDB troši puno memorije, optimizira samu bazu podataka. Ako je projekt vrlo velik, za veće performanse ima smisla širiti baze podataka na različite poslužitelje.