Jak budować aplikacje internetowe za pomocą MongoDB

Spisie treści:

Anonim

Aplikacje internetowe korzystające z MongoDB - MongoDB jest jednym z najlepszych narzędzi dla poważnych programistów internetowych, a ten artykuł na temat MongoDB zawiera wszystko, co musisz wiedzieć, aby tworzyć aplikacje internetowe za pomocą MongoDB. Ale zanim zaczniemy, rzućmy okiem na popularne narzędzie.

Źródło obrazu: pixabay.com

Co to jest MongoDB?

Mówiąc najprościej, MongoDB jest wieloplatformową, zorientowaną na dokumenty bazą danych NoSQL, która wykorzystuje dokumenty podobne do JSON przy użyciu schematów dynamicznych, zwanych dokumentami BSON, zamiast przestrzegać konwencjonalnej struktury relacyjnej bazy danych (RDB).

To wiele terminów, których możesz nie znać, więc najpierw je podzielmy.

Teraz zorientowana na dokumenty baza danych działa na podstawowej koncepcji, że dokument danych zawiera „metadane”, które są wartościami służącymi do identyfikacji rodzaju danych i ułatwiają przechowywanie i pobieranie w razie potrzeby. Na przykład spójrzmy na następujące dwa wiersze danych:

  • John Hancock
  • Architekt

Rzut oka na te dwie linie powinien dać ci pojęcie, do czego odnoszą się te dane: imię i zawód osoby. Jednak maszyna nie może odróżnić tego rozróżnienia. Trzeba powiedzieć typ danych.

W RDB ten typ może być przechowywany w magazynie klucz-wartość, który jest oddzielny od samego dokumentu. Jednak w przypadku bazy danych zorientowanej na dokumenty można określić typ danych podczas wpisywania kodu. W rezultacie piszesz coś takiego:

  • John Hancock
  • Architekt

I proszę bardzo; teraz rodzaj danych został zdefiniowany bezpośrednio w dokumencie. Daje to elastyczność, której nie ma w bazach danych, dlatego bazy danych zorientowane na dokumenty są tak popularne w aplikacjach internetowych.

W końcu aplikacje internetowe podlegają regularnym zmianom i aktualizacjom. Oczywiście RDB mają również swoje zalety, a bazy danych zorientowane na dokumenty nie są idealne dla każdej sytuacji, ale nie przechodźmy dalej.

Przejdźmy do JSON, BSON i schematów. JSON odnosi się do JavaScript Object Notation, ale w rzeczywistości jest to otwarty standardowy format danych, który może współpracować z językami innymi niż JavaScript.

Schemat to struktura bazy danych, zdefiniowana jako tabele w przypadku baz danych RDB. Ponieważ bazy danych zorientowane na dokumenty nie używają takich tabel, są one zasadniczo pozbawione struktury lub pozbawione schematów.

Co się tyczy BSON, to znaczy po prostu Binary JSON i jest to format przechowywania danych dla bazy danych MongoDB. To wszystko, co musisz o tym wiedzieć na tym etapie.

Teraz, po zapoznaniu się z podstawami, zobaczmy, dlaczego MongoDB jest dobrym wyborem do tworzenia aplikacji internetowych:

Dlaczego warto wybrać MongoDB?

Istnieje kilka powodów popularności MongoDB do tworzenia aplikacji internetowych. MongoDB nie jest doskonałym narzędziem; Wręcz przeciwnie, w rzeczywistości. MongoDB ma kilka wyzwań i nie jest odpowiednie dla wszystkich aplikacji internetowych. Ale MongoDB działa dobrze, jeśli chodzi o aplikacje internetowe z następujących powodów:

  • MongoDB jest bez schematów

Baza danych MongoDB może przechowywać kolekcje dokumentów, przy czym każdy dokument ma swój własny rozmiar, treść i liczbę pól. Możesz wrócić i zmienić kluczowe wartości lub dodać i usunąć je, jak chcesz.

To sprawia, że ​​struktura pojedynczego obiektu jest przejrzysta i prosta, a MongoDB można łatwo skalować w razie potrzeby.

  • MongoDB jest ogólnego zastosowania

Baza danych może być używana do wielu aplikacji internetowych, w tym do zarządzania danymi klientów, zarządzania treścią, centrów danych, aplikacji mobilnych, Internetu rzeczy, Big Data, katalogów produktów i zasobów oraz bazy danych jako usługi.

  • MongoDB obsługuje automatyczne dzielenie na fragmenty

Relacyjne bazy danych są zwykle skalowane w pionie, w którym pojedynczy serwer obsługuje całą bazę danych. Może to ograniczyć skalę działania, ponieważ rozwiązaniem jest dodawanie w poziomie i dodawanie serwerów zamiast koncentrowania pojemności na jednym serwerze.

Udostępnianie bazy danych odbywa się, aby tego uniknąć i aby sprzęt działał jak pojedynczy serwer. Programiści muszą wdrożyć wiele relacyjnych baz danych na różnych komputerach oraz opracować kod aplikacji do dystrybucji danych, zapytań i agregowania wyników.

MongoDB i inne bazy danych NoSQL obsługują automatyczne udostępnianie, co oznacza, że ​​automatycznie rozkładają dane na różne serwery, bez informowania aplikacji o składzie.

MongoDB jest szczególnie przydatny w przypadku przetwarzania w chmurze. Jako programista nie musisz budować drogich i złożonych platform do obsługi aplikacji internetowych, ale możesz skupić się na pisaniu rzeczywistego kodu aplikacji.

Jeszcze kilka terminów, aby dowiedzieć się o MongoDB

W porządku, więc omówiliśmy teraz podstawy i zalety MongoDB. Zanim ubrudzimy sobie dłoń, spójrzmy na kilka innych terminów, które powinieneś znać:

  • Baza danych: baza danych zawiera kolekcje, a każda baza danych ma własne pliki w systemie plików. Typowy serwer MongoDB będzie miał kilka baz danych.
  • Kolekcja: grupa dokumentów MongoDB nazywa się kolekcją i jest to odpowiednik tabeli w bazach danych RDB. Pojedyncza baza danych będzie miała kolekcję, a każdy dokument będzie miał inne pola. W przeciwieństwie do tabletów kolekcje nie mają schematu.
  • Dokument: Dokument jest zbiorem par klucz-wartość i ma schemat dynamiczny, co oznacza, że ​​różne dokumenty w tej samej kolekcji mogą mieć różne zestawy pól i struktury.

    Polecane kursy

  • Kursy Ruby Debugowania
  • Szkolenie z programowania PHP MySQL
  • Szkolenie z programowania online VB.NET
  • Szkolenie Fundacji ITIL

Budowanie aplikacji internetowych

Aplikacje internetowe budowane dla tego konkretnego przewodnika MongoDB to agregator RSS, taki jak Google Reader. Aplikacje internetowe będą miały dwa kluczowe komponenty: interfejs API REST i moduł pobierania kanałów.

Aby zrozumieć, czym jest interfejs API REST, musisz najpierw dowiedzieć się trochę o stosie MEAN. Kod modułu pobierania kanałów można znaleźć nawet w katalogu github.

Zrozumienie stosu MEAN:

Stos MEAN oznacza:

  1. MongoDB, czyli baza danych, która ma być używana dla aplikacji internetowej
  2. js, czyli lekki framework aplikacji internetowych
  3. js, który jest platformą do tworzenia aplikacji internetowych obsługujących JavaScript i HTML5
  4. js, który jest interpreterem JavaScript po stronie serwera

Dla omawianych tutaj aplikacji internetowych zostanie utworzony interfejs API REST zamiast interfejsu użytkownika HTML. Interfejs API Representational State Transfer (REST) ​​jest lżejszą alternatywą dla interfejsów API opartych na XML i może służyć jako podstawa dla dowolnego typu interfejsu, pomimo braku interfejsu użytkownika.

Funkcja REST działa w modelu klient-serwer, przy czym klient wysyła polecenia HTTP do serwera HTTP wraz ze zmiennymi parametrami zakodowanymi w adresie URL opisującym docelowy obiekt akcji. Serwer następnie odpowiada kodem JSON i kodem wyniku.

Teraz zarówno MongDB, jak i JavaScript dobrze reagują z JSON, dzięki czemu stos MEAN jest szczególnie odpowiedni dla aplikacji internetowych.

CRUD

Skrót CRUD oznacza tworzenie, czytanie, aktualizowanie i usuwanie. Są to typowe operacje na bazie danych, które tłumaczą w HTTP jako post, get, put i delete.

Budowanie interfejsu API REST

Zacznijmy od utworzenia interfejsu API REST, rozwijając podstawy do budowania aplikacji internetowych. Aplikacja może być oparta na sieci Web lub zaprojektowana dla systemu Android, iOS lub innych określonych platform. Na początek wypiszmy rzeczy, które aplikacja będzie mogła wykonać:

  1. Zezwalaj użytkownikom na tworzenie konta
  2. Włącz je, aby subskrybować lub anulować subskrypcję kanałów
  3. Daj im możliwość czytania i oznaczania wpisów kanału jako przeczytanych lub nieprzeczytanych
  4. Śledź kanały RSS do monitorowania
  5. Przechowuj informacje o użytkowniku na odpowiednich kontach
  6. Śledź subskrypcje kanałów użytkowników
  7. Śledź wpis kanału już przeczytany przez użytkownika

Modelowanie danych

W zależności od wymagań aplikacje internetowe będą potrzebowały czterech kolekcji do zarządzania informacjami:

  1. Kolekcja użytkowników
  2. Kolekcja pasz
  3. Kolekcja mapowania wpisów kanału użytkownika
  4. Kolekcja wpisu kanału

Oto ich bliższe spojrzenie:

  • Kolekcja pasz:

Następujący JSON jest dobrym przykładem modelowania kolekcji kanałów:

( "_id, ObjectId("523b1153a2aa6a3233a91412")

"requiresAuthentication": false,

"permanentlyRemoved": false,

"feedURL": "http://feeds.reuters.com/reuters/topNews",

"title": "Reuters",

"bozoBitSet": false,

"enabled": true,

"etag": "4bL78iLSZud2iXd/vd10mYC32BE",

"link": "http://www.reuters.com/ ",

"permanentRedirectURL": null,

"description": "Reuters news feed” )

Powyższy dokument JSON to kanał RSS dla Reuters, śledzący informacje o najnowszych wiadomościach publikowanych na stronie. Jest tu wiele pól, ale najważniejsze dla aplikacji internetowych jest adres URL kanału i opis kanału.

Adres URL jest ważny do pobierania treści z właściwego źródła, a opis jest ważny, ponieważ zawiera podsumowanie kanału.

Tymczasem pozostałe pola są do użytku wewnętrznego. Możesz dodać więcej lub usunąć niektóre z nich, jak chcesz. Na górze dokumentu znajduje się pole _id. Każdy dokument musi mieć to pole, a identyfikator musi być unikalny.

W powyższym przykładzie identyfikator pola został utworzony ręcznie dla tego pola. Jeśli tego nie zauważysz, MongoDB automatycznie je utworzy.

  • Śledzenie i zbieranie wpisów kanału

Jeśli chcesz śledzić więcej kanałów informacyjnych, możesz dodać ich więcej, używając tego samego formatu powyżej. Po zakończeniu dodawania kanałów nadszedł czas, aby je śledzić i zbierać. Poniżej znajduje się dokument do pobrania wpisu kanału:

( "_id": ObjectId("523b1153a2aa6a3233a91412"),

"description": "Martin Shkreli, the poster boy for prescription drug price increases who was arrested for securities fraud this week, has stepped down from his post as chief executive officer of Turing Pharmaceuticals Inc, the company said on Friday”,

"title": "Turing Pharma names chairman to replace Shkreli as CEO",

"summary": "Turing Pharma names chairman to replace Shkreli as CEO”,

"content": (( "base": "http://www.reuters.com/",

"type": "text/html",

"value": ”LOTS OF HTML HERE",

"language": "en" )), "published Date": ISODate("2015-12-18T18:13:58+0000"),

"link": " http://www.reuters.com/article/us-usa-crime-shkreli-ceo-idUSKBN0U122R20151218",

"feedID": ObjectId("523b1153a2aa6a3233a913f8") )

Po raz kolejny możesz zobaczyć wypełnione pole _id wraz z kilkoma innymi polami, takimi jak opis, podsumowanie i tytuł. Pole zawartości używa tablicy, a MongoDB pozwala tablicom na przechowywanie dokumentów. Taki układ dokumentów podrzędnych może być szczególnie użyteczny w sytuacjach, w których wszystkie informacje muszą być przechowywane razem.

Zanotuj feedID; ma ten sam typ ObjectId i wartość _id jak wcześniejszy dokument wejścia do kanału Reuters. Oferuje to model referencyjny, dzięki czemu można przeszukać kolekcję kanałów o tę samą wartość identyfikatora, aby zwrócić dokument Reuters.

  • Śledzenie użytkownika

Oto przykładowy dokument do śledzenia użytkowników:

( "_id" : ObjectId("54ad6c3ae764de42070b27b1"),

"active" : true,

"email" : " ",

"firstName" : "John",

"lastName" : "Hancock",

"sp_api_key_id" : "6YQB0A8VXM0X8RVDPPLRHBI7J",

"sp_api_key_secret" : "veBw/YFx56Dl0bbiVEpvbjF”,

"lastLogin" : ISODate("2015-01-07T17:26:18.996Z"),

"created" : ISODate("2015-01-07T17:26:18.995Z"),

"subs" : ( ObjectId("523b1153a2aa6a3233a913f8"),

ObjectId("54b563c3a50a190b50f4d63b") ), )

Tutaj użytkownik ma trzy kluczowe atrybuty: imię, nazwisko i adres e-mail. Istnieją również dwa elementy, których można używać z interfejsem API do zarządzania użytkownikami Stormpath: sp_api_key_secret i sp_api_key_id.

Ostatnie pole, subs, jest tablicą subskrypcji i informuje kanał, który subskrybuje użytkownik.

  • Mapowanie wpisów kanału

Ostateczna kolekcja jej umożliwia mapowanie użytkowników do kanałów i śledzenie kanałów, które zostały przeczytane:

( "_id" : ObjectId("523b2fcc054b1b8c579bdb82"),

"read" : true,

"user_id" : ObjectId("54ad6c3ae764de42070b27b1"),

"feed_entry_id" : ObjectId("523b1153a2aa6a3233a91412"),

"feed_id" : ObjectId("523b1153a2aa6a3233a913f8") )

Jak widać, podstawowa wartość logiczna true / false jest używana do oznaczania, czy plik danych został odczytany, czy nie. Teraz użytkownik powinien mieć możliwość wykonywania następujących funkcji:

  1. Tworzenie konta
  2. Subskrybowanie lub rezygnacja z subskrypcji kanałów
  3. Czytanie wpisów kanału
  4. Oznaczanie kanałów lub wpisów jako przeczytanych lub nieprzeczytanych
  5. Zresetuj hasło

Oto lista sposobów mapowania tych operacji na trasy HTTP i polecenia.

TrasaKomendaOpisZmienne
/ user / enrollPOCZTAZarejestruj nowego użytkownikaImię
nazwisko
e-mail
hasło
/ user / resetPasswordPOŁOŻYĆZresetowanie hasłae-mail
/ feedsOTRZYMAĆUzyskaj subskrypcje kanałów dla każdego użytkownika z opisem i nieprzeczytaną liczbą
/ feeds / subscribePOŁOŻYĆSubskrybuj nowy kanałfeedURL
/ feeds / wpisyOTRZYMAĆUzyskaj wszystkie wpisy dotyczące kanałów, które subskrybuje użytkownik
/ feeds // wpisyOTRZYMAĆUzyskaj wszystkie wpisy dotyczące określonego kanału
/ feeds /POŁOŻYĆOznacz wszystkie wpisy dla określonego kanału jako przeczytane lub nieprzeczytaneczytaj =
/ feeds // wpisy /POŁOŻYĆOznacz konkretny wpis jako przeczytany lub nieprzeczytanyczytaj =
/ feeds /USUNĄĆAnuluj subskrypcję tego konkretnego kanału

Bezpieczny HTTP to standardowe podejście używane do wysyłania poufnych informacji, takich jak hasła w środowisku produkcyjnym

Kolejne kroki: uwierzytelnianie w świecie rzeczywistym

Uwierzytelnianie użytkowników jest ważne dla bezpiecznego zarządzania użytkownikami, hasłami i resetami. Istnieje kilka sposobów uwierzytelnienia kont użytkowników.

Na przykład możesz użyć wtyczki Passport z Node.js, która jest przydatna do uwierzytelniania na kontach Facebook, Twitter i mediach społecznościowych.

Powyższy przykład zależy od użycia Stormpath, interfejsu API REST, który obsługuje autoryzację i uwierzytelnianie za pomocą kluczy API i oferuje zarządzanie użytkownikami jako usługą.

Polecane artykuły

Oto kilka artykułów, które pomogą Ci uzyskać więcej szczegółowych informacji na temat aplikacji internetowych za pomocą MongoDB, więc po prostu przejdź przez link.

  1. HTML5 kontra Flash podekscytowany różnicą?
  2. Java vs Node JS - 8 różnic, które powinieneś znać
  3. Aplikacja do testowania stron internetowych Przydatny i kompleksowy przewodnik
  4. Jak korzystać z szablonów stron HTML | Zastosowanie | Mobile | Najlepsza
  5. Rozwój oprogramowania a rozwój sieci
  6. Jak przygotować narzędzia Web Analytics do pracy dla Ciebie (przewodnik)
  7. MongoDB vs PostgreSQL: Jakie są różnice
  8. Przydatny przewodnik po MongoDB vs Hadoop
  9. Najlepszy przewodnik na MongoDB vs Cassandra