Първият ми опит с MongoDB, програмист бележки

Повечето програмисти (с изключение на тези, които не следя новините) вероятно чули нещо за MongoDB, но никога не са използвали тази база данни. Нека да разберете какво може да MongoDB и какво не може, и, въоръжен с Perl и Mojolicious. напишете проста sokraschalku връзки, използващи MongoDB.







Теоретичната част

Това на първо място трябва да знаете за MongoDB?

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

Има много други фини точки. Например, когато актуализирате документ в колекция с ограничен размер, документът не може да бъде увеличена. Друг MongoDB не позволява неоптимизирана сортиране на документи (когато теглене на големи количества данни, както и че не е нужно подходящо индекс). И за да работи с файлове MongoDB използва mmap. В тази връзка, MongoDB обикновено използва повече дисково пространство, отколкото други бази данни. Също така, ако искате да работите с обеми от данни по-голяма от 4 GB, ще се наложи 64-битов сървър.

Може да попитате как можете да направите нещо, за да използва тази база данни, ако тя не поддържа дори сделка? В действителност, има какво да се притесняваш. Със сигурност сайтове половината все още пазят данните си в MyISAM. И нищо, защото ние живеем по някакъв начин. Например, ако сте решили да пишете във форума за MongoDB двигател, изтриване на теми първо трябва да премахнете всички отговори по тази тема и след това самата тема. Освен това, никой не забранява да използвате MongoDB, например, във връзка с PostgreSQL.

Пример - прости sokraschalka връзки

В Debian / Ubuntu инсталирате MongoDB е направено много просто:

ап-да инсталирате MongoDB

В FreeBSD - малко по-сложно:

pkg_add -r MongoDB
/ ЮЕсАр / местни / и т.н. / rc.d / mongod onestart

Аз лично по време на инсталацията под FreeBSD MongoDB тази грешка:

Създаване на потребител "MongoDB" с UID "922".
PW: потребител "MongoDB" вече съществува

Ако изведнъж се срещна и с нея само след инсталирането на следната команда:

pwd_mkdb -p /etc/master.passwd

Поздравления, MongoDB инсталацията приключи! Това, разбира се, не на клъстер комплекти реплика и автоматична сегментация, а като тестова среда най-много. В допълнение към сървъра MongoDB самата (mongod), с които разполагаме има редица полезни услуги, по-специално mongodump, mongorestere и Монго. Първите две са очевидно предназначена за архивиране и възстановяване от резервно копие. Последното е черупка да се работи с mongod. И, ако отидете на Localhost: 28,017, а след това можете да видите на уеб-базиран интерфейс за mongod с трупи, информация натоварване, и така.







Git Git клонинг: // github.com / afiskon / mongo_shortener.git
CD mongo_shortener
Sudo. / INSTALLDEPS.sh # набор зависимост
докаже -rl. / T # минава тестовете
Starman --port 3000 / скрипт / mongo_shortener

Сега, ако отидете на locahost: 3000, ще бъде възможно да се опита sokraschalku в действие:

Първият ми опит с MongoDB, програмист бележки

Напомням ви, че аз съм програмист, а не дизайнер, и не знам как красиви сайтове # 58;) А сега се опитват да разбера как sokraschalka работи. За да започнете, отворете ИЪ файл / MongoShortener / Database.pm:

пакет MongoShortener. база данни;

използването на строг режим;
използва предупреждения;
използва MongoDB;

под getHandle # 123;
освен ако # 40; дефинирани $ db # 41; # 123;
$ Db = MongoDB. Connection -> нов # 40;
гостоприемник => 'MongoDB: // Localhost: 27017.
# 41; -> get_database # 40; "MongoShortener" # 41; ;

$ Гб -> URL адреси -> ensure_index # 40; # 123; код => 1 # 125. # 123; уникален => 1 # 125; # 41; ;
# 125;

върне $ db;
# 125;

Сега вече знаем името на базата данни. Но ние виждаме, че след инсталирането на всяка нова връзка в колекцията адреси се провежда, за да се създаде уникален индекс на кода на полето. Ако индексът все пак, той ще бъде създаден, но ако тя е вече там, нищо няма да се случи. Доколкото разбирам, създавате индекси директно в кода, така че да не се напрягат тези администратори - често срещана практика, когато се използва MongoDB.

Вие също трябва да се обърне внимание на ИЪ / MongoShortener / Main.pm файл:

под _create_short_url # 123;
мой # 40; $ Self. $ URL # 41; = @_;
ми $ db = MongoShortener. База данни. getHandle # 40; # 41; ;
ми $ код = undef;
за # 40; 1. 5 # 41; # 123;
$ Code = 1 + Int ранд # 40; 2 ** 40-1 # 41; ;
опитвам # 123;
$ Гб -> URL адреси -> вложка # 40; # 123; код => $ код. URL => $ URL # 125. # 123; безопасно => 1 # 125; # 41; ;
# 125; улов # 123;
$ Code = undef;
# 125; ;
Последният случай е определено $ код;
# 125;
умре "CODE_GEN_FAILED", освен ако не е определено $ код;

ми $ SHORT_URL = encode_base64url # 40; пакет # 40; "Q". $ код # 41; # 41; ;
$ SHORT_URL =

връщане HOME_URL # 40; # 41. $ SHORT_URL;
# 125;

под _resolve_short_url # 123;
мой # 40; $ Self. $ SHORT_URL # 41; = @_;
$ SHORT_URL. = "A" х # 40; 11 - дължина $ SHORT_URL # 41; ;
ми $ код = разопаковането # 40; "Q". decode_base64url # 40; $ SHORT_URL # 41; # 41; ;

ми $ db = MongoShortener. База данни. getHandle # 40; # 41; ;
ми $ док = $ db -> URL адреси -> find_one # 40; # 123; код => $ код # 125; # 41; ;
върне определено $ док. $ Doc -> # 123; URL # 125. undef;
# 125;

Забележете, вторият аргумент да вмъкнете. влизане подразбиране в MongoDB е направена без потвърждение. Това означава, че ние просто се даде командата "Създаване / обновяване / Отнемете такъв документ", а не изчака отговора. По очевидни причини, в този случай, ние е от решаващо значение да се чака потвърждение от сървъра. Това, което се постига чрез предаване, а вторият аргумент 1> поставете метод.

Можете да експериментирате малко с MongoDB, като е работил с нея чрез Монго на обвивката:

$ Монго MongoShortener
MongoDB черупка версия: 2.0.6
свързване към: MongoShortener

Вижте списъка с колекции в базата данни:

> Показване на колекции

допълнителни материали

Като източници на повече информация за MongoDB, бих препоръчал следното:

А какво ще кажеш за MongoDB? Вече се опитаха да използват базата данни в реални проекти? Как впечатления?

Подобно на този пост? Споделете с другите:

(Трябва да включите JS)

За мен

Поздрави! Моето име е Александър. Тук пиша за неща, които представляват интерес за мен
и от време на време - само за живота.

Обърнете внимание!

облак тагове