Latest web development tutorials

MongoDB slice

plastry

Jest jeszcze jeden klaster MongoDB wewnątrz, krojenie technologii, duża ilość danych, aby sprostać rosnącemu zapotrzebowaniu na MongoDB.

Gdy MongoDB do przechowywania dużej ilości danych, maszyna może być niewystarczająca do przechowywania danych, może być niewystarczająca, aby zapewnić akceptowalną wydajność odczytu i zapisu. W tym momencie możemy podzielić dane na wielu komputerach, tak aby system bazy danych może przechowywać i przetwarzać więcej danych.


Dlaczego slice

  • Skopiuj wszystkie operacje zapisu w węźle podstawowym
  • Opóźnić poufnych danych w zapytaniu głównym
  • Jeden komplet kopii jest ograniczona do 12 węzłów
  • Kiedy ogromna ilość żądań pojawi się, gdy pamięć.
  • Lokalny brak dysku
  • ekspansja pionowa jest drogie

MongoDB slice

Poniższy rysunek przedstawia wykorzystanie struktury klastra plaster w dystrybucji MongoDB:

Powyższy obraz ma następujące trzy główne elementy:

  • Shard:

    Służy do przechowywania rzeczywisty blok danych, rzeczywistego środowiska produkcyjnego, rola serwera odłamek może ustawić kilka maszyn relica ustawić zobowiązanie do zapobiegania hosta pojedynczy punkt awarii

  • Konfiguracja serwera:

    mongod instancji, przechowuje całą ClusterMetadata, w tym informacje kawałku.

  • Zapytanie routery:

    Przedni koniec trasy, przy czym dostęp do klienta, a cała gromada wyglądać jednej bazie danych aplikacji front-end może przejrzysty używają.


Przykłady fragmentacji

Porty tkaniny slice są dystrybuowane w następujący sposób:

Shard Server 1:27020
Shard Server 2:27021
Shard Server 3:27022
Shard Server 4:27023
Config Server :27100
Route Process:40000

Krok pierwszy: Początek Shard Server

[root@100 /]# mkdir -p /www/mongoDB/shard/s0
[root@100 /]# mkdir -p /www/mongoDB/shard/s1
[root@100 /]# mkdir -p /www/mongoDB/shard/s2
[root@100 /]# mkdir -p /www/mongoDB/shard/s3
[root@100 /]# mkdir -p /www/mongoDB/shard/log
[root@100 /]# /usr/local/mongoDB/bin/mongod --port 27020 --dbpath=/www/mongoDB/shard/s0 --logpath=/www/mongoDB/shard/log/s0.log --logappend --fork
....
[root@100 /]# /usr/local/mongoDB/bin/mongod --port 27023 --dbpath=/www/mongoDB/shard/s3 --logpath=/www/mongoDB/shard/log/s3.log --logappend --fork

Krok drugi: Uruchom Server Config

[root@100 /]# mkdir -p /www/mongoDB/shard/config
[root@100 /]# /usr/local/mongoDB/bin/mongod --port 27100 --dbpath=/www/mongoDB/shard/config --logpath=/www/mongoDB/shard/log/config.log --logappend --fork

Uwaga: W tym miejscu możemy rozpocząć jak zwykłe usługi MongoDB jako początek, nie trzeba dodawać parametry -shardsvr i configsvr. Ponieważ rola tych dwóch parametrów jest zmiana portu startowego, więc możemy być self-wyznaczonego portu.

Krok trzeci: Rozpoczęcie procesu trasy

/usr/local/mongoDB/bin/mongos --port 40000 --configdb localhost:27100 --fork --logpath=/www/mongoDB/shard/log/route.log --chunkSize 500

Parametry startowe Mongos, chunkSize ten jest wykorzystywany do określenia wielkości fragmentu, jednostka jest MB, wielkość domyślna to 200MB.

Krok czwarty: Skonfiguruj Sharding

Następnie używamy MongoDB Shell Zaloguj się do Mongos, dodawać węzły Shard

[root@100 shard]# /usr/local/mongoDB/bin/mongo admin --port 40000
MongoDB shell version: 2.0.7
connecting to: 127.0.0.1:40000/admin
mongos> db.runCommand({ addshard:"localhost:27020" })
{ "shardAdded" : "shard0000", "ok" : 1 }
......
mongos> db.runCommand({ addshard:"localhost:27029" })
{ "shardAdded" : "shard0009", "ok" : 1 }
mongos> db.runCommand({ enablesharding:"test" }) #设置分片存储的数据库
{ "ok" : 1 }
mongos> db.runCommand({ shardcollection: "test.log", key: { id:1,time:1}})
{ "collectionsharded" : "test.log", "ok" : 1 }

Krok piąty: W kodzie programu bez większych zmian, bezpośrednie połączenie zgodnie ze zwykłą bazie Mongo jako interfejs dostępu do bazy danych, aby połączyć 40.000