Az adatokhoz való hozzáférést - ami egy adatbázis dokumentumok
Először is, meg kell adni a meghatározása NoSQL. Ez a kifejezés már túl gyakran használják. Ezeket a továbbiakban együtt adattároló mechanizmusok, amelyek nem relációs, ezért nem szükséges a használata az SQL az adatok elérésére. A cikk «foglalkoztató NoSQL kritika» (bit.ly/rkphh0) Bredli Holt (Bradley Holt), a szakértő a CouchDB, megemlíti, hogy hallott valami felülírás NoSQL „nem csak az SQL (nemcsak SQL)». Szerinte NoSQL semmiképpen nem tekinthető a mozgalom ellen, SQL. Ez a nézet, hogy saját ízlése szerint, mert én szívesebben használják egy bizonyos munkához a legjobb eszközök.
A készlet a rendelkezésre álló adatbázisok dokumentumok, fogok összpontosítani a két legnépszerűbb - MongoDB (mongodb.org) és CouchDB (couchdb.apache.org), valamint RavenDB (ravendb.net), amit írt a Microsoft .NET Framework és egyre nagy népszerűségnek (lásd. cikk „integrálása RavenDB az ASP.NET MVC 3 alkalmazás” ebben a kérdésben). Minden részletet ezen adatbázisok, akkor megtudja, ellátogat a weboldalak.
Egy alternatíva a relációs adatbázisok, és nem helyettesíti
NoSQL dokumentum adatbázis és az adatok - egy alternatíva a relációs adatbázisok, ahelyett, helyettük. Mindegyiknek megvan a saját niche, és ők csak kiterjeszti a tartomány, amelyet választott. De hogyan kell kiválasztani a megfelelőt? Egy fontos szempont - a konzisztencia-tétel, a rendelkezésre állás, és hibatűrő partíciók (konzisztencia, a szabad és Partition Tolerance, CAP). Azt állítja, hogy ha dolgozik elosztott rendszerek, csak akkor kap két három garanciák (C, A vagy P), így el kell döntenie, mi a fontosabb. Ha összhang a legfontosabb, akkor kell használni a relációs adatbázis.
Egy példa arra, következetesség lenne a legfontosabb garancia - Banki alkalmazás, vagy esetleg egy alkalmazás fut egy atomerőmű. Ilyen forgatókönyv, fontos, hogy figyelembe vegyék minden adat minden pillanatban. Ha valaki visszavonja a pénzt a számlára, akkor tényleg kell tudni róla, ha megnézi az egyenleg. Ezért valószínű, hogy inkább egy relációs adatbázis, magas szintű ellenőrzést a tranzakciókat.
A kifejezés akkor gyakran hallani - „végső koordináció» (esetleges konzisztencia), vagy ahogy kifejezte a helyszínen RavenDB: «Ez jobb, mint az elavult adatok önmagát.” Egyes szakterületeken elég végső állagot. Van nem egy nagy dolog, ha a hasznosítható adatokat nem relevánsak a milliszekundumos.
Bizonyos helyzetekben, talán még fontosabb, mint hogy létezik egy változata az adatokat, és nem vár bejelentkezés az összes tranzakciót. Ez arra utal, hogy a rendelkezésre álló (A) a CAP, amely elsősorban jár támogatást üzemidő szerver. Abban, hogy mindig lehet hozzáférni az adatbázishoz, prioritás, és ez jelentősen gyorsíthatja tárol munka (t. E. Az adatbázis dokumentumok gyors!). Látni fogja, hogy a rugalmasság a szakaszok (P) számára is fontos adatbázis dokumentumokat, különösen a vízszintes méretezést.
RESTful HTTP API - a legtöbb
Sok a NoSQL adatbázisok állnak rendelkezésre RESTful stílusban, így csatlakozik a bázis URI az adatok és lekérdezések és parancsok tartoznak például a HTTP-hívásokat. A kivétel a MongoDB. Alapértelmezésben ez TCP protokoll segítségével kommunikál az adatbázis, amely legalább egy HTTP API. CouchDB és MongoDB konkrét API specifikus nyelvek, amely lehetővé teszi, hogy írjon, és végre lekérdezések és frissítéseket a megfelelő nyelven, anélkül kódoló HTTP-hívásokat. A RavenDB elérhető API .NET-kliens, amely egyszerűsíti az interakció az adatbázissal.
Kapcsolódó adatrekord
Sokan tévesen úgy vélik, ha nem egy relációs adatbázis - egy sima file. Dokumentumok tárolt dokumentum adatbázis tartalmazhat adatokat a bonyolult szerkezetű: fák csomópontok. Minden bejegyzés az adatbázisban egy dokumentum, és lehet önálló adathalmazt. Ebben az esetben a rekord tartalmazhat egy egyedi rendszer, és nem feltétlenül függ semmilyen más dokumentumokat.
Az alábbiakban egy tipikus példája, hogy mit keres bejegyzés a dokumentum adatait (I kölcsönöztem ezt a példát egy diák egy tankönyv MongoDB):
egyedi kulcsok
Keys van szükség, semmilyen adatbázisban. Ha nem biztosítja számukra, akkor jönnek létre az Ön számára, a belső szinten. Kulcs nélkül nem lehet indexelt adatbázisban, de közismert kulcsok (közismert kulcsok) is szükség lehet a tárgykörben. Figyeljük meg az előző példában, a kiadvány a blog linkre «felhasználók / 203907.” Pontosan RavenDB használ a kulcsfontosságú értékeket és lehetővé teszi, hogy meghatározza a kapcsolatát dokumentumokat.
Tárolás JSON formátumban
Összességében Mindezekben a példákban a feljegyzések - az általuk használt JSON tárolására. CouchDB és RavenDB (és sokan mások) tárolja az adatokat JSON. MongoDB használ JSON variáns az úgynevezett bináris JSON (BSON), amely lehetővé teszi, hogy a bináris szerializációs. BSON - ez egy belső ábrázolás az adatok, tehát a szempontból a programozás, nincs különbség ne legyen.
Az egyszerűség kedvéért a JSON objektum lehetővé az átalakulás a szerkezet szinte bármilyen nyelven JSON formátumban. Ezért, ha lehet azonosítani a tárgyakat a kérelmet, és tárolja azokat az adatbázisban. Ez ment fejlesztők, hogy használja ORM (objektum-relációs mapper) állandó közötti fordítás adatbázis- és sémaosztályokat / tárgyakat.
Mechanizmusok teljes szöveges keresés, például Lucene (lucene.apache.org), amelyen nyugszik RavenDB, hogy a nagy sebességű keresés a szöveges adatok.
Megjegyzés: a közzététel időpontját a példában a blog. A JSON nem az a típus, amely támogatja a dátumot, de az egyes adatbázis módot ad az értelmező típusú nyúlnak bármilyen nyelvet, amelyen kódot. Ha megvizsgálja a lista adattípusok és egyezmények az MongoDB BSON API (bit.ly/o87Gnx), látni fogja, hogy az időpont nem kerül be azt, valamint a több mások.
Tárolása és visszakeresése kapcsolódó adatok a nyilvántartásban, adhat óriási előnyökkel teljesítmény és skálázhatóság. Adatbázisok ebben az esetben nem kell lapáttal összes információ a kereséssel kapcsolatos adatokat, mert minden egy helyen tárolni.
készletek típusai
Amennyiben az alkalmazás értesüljön kölcsönhatásban az adatbázisban, hogy az egyik elem egy diák, a másik - a könyv, és a harmadik - a kiadvány egy blog? Ezek az adatbázisok fogalmát használják készletek (gyűjtemények). Függetlenül bármilyen dokumentumot áramköri van leképezve egy adott beállított (például, meg a tanuló), lehet letölteni, ha a lekérdezés adatokat ebből a készletből. Továbbá, hogy jelezze, milyen gyakran használják bármely területén. Ez nagyban leegyszerűsíti a keresési művelet, de eldönteni, hogy mit kell venni a forgatáson, és hogy - nem, meg kell magad.
Az adatbázis séma nélkül
Rögzítése hallgató, a fent leírt tartalmaz egy áramkört. Minden bejegyzés felelős saját rendszer, akkor is, ha benne van egy adatbázis, vagy egy sor. És az egyik hallgatói nyilvántartások nem feltétlenül egyezik meg a többi hallgatói nyilvántartások. Természetesen a szoftver meg kell értenie a köztük lévő különbségeket. Ez a rugalmasság lehet használni, hogy a hatékonyság javítása. Például, hogy mit lehet tárolni null-érték? Ha az ilyen most_repeated_class ingatlan nem számít, akkor tegye a következőket:
tranzakciók támogatása
Minden adatbázis nyújt valamilyen szintű támogatása (akik többet, ki kevesebbet), de egyikük sem képes elérni ugyanazt a szintet, mint a relációs adatbázisok. Ebben a kérdésben, utalok, hogy a dokumentumokat.
Document Database és DDD
Az egyik alapvető tervezési koncepciók szabályozott adatok domain (domén-vezérelt fejlesztés, DDD), kapcsolódik a modellezési terület segítségével aggregált gyökerek. Amikor tervez tartomány osztályok (amely lehet egy dokumentumot az adatbázis), akkor keresni az adatokat, amelyek gyakran önellátóak (például egy rendelést a helyzet), és rájuk koncentrálni az egyéni adatok szerkezetét. A rendelési rendszer akkor is valószínű, hogy az ügyfelek és a termékeket. De ahhoz, hogy a rend lehet elérni anélkül, hogy információt szerezzenek a megrendelő és a terméket fel lehet használni anélkül, hogy hozzáférést biztosít a sorrendet, amelyben jelen van. Azaz, bár akkor rengeteg lehetőség önálló adatstruktúrák (ugyanabban a sorrendben és annak helyzet), ez nem zárja ki egyes helyzetekben szükséges vagy lehetséges adatkapcsolat útján idegen kulcsokat.
Minden adatbázishoz csatolt különféle irányítási álló sablonok, és adja meg, ezek gyakran hagyjuk, hogy sikerül a felhasználóknak. Például az említett dokumentációt MongoDB sablon Array Ősök, amely felgyorsítja a hozzáférést az adatokhoz történő csatlakozással kapcsolatos.
Ha az ismétlés az adatok relációs adatbázisban tartják bűnnek, majd amikor dolgozik NoSQL adatbázisok, különösen elosztott, de-normalizálása adatok hasznos és teljesen elfogadható.
Kérelmek és frissítés
Minden adatbázis egy API lekérdezni és frissítés. Bár lehet, hogy nem része az alap API, kiegészítőket érhetők el a különböző nyelvű API. Ahhoz, hogy írja be a .NET-keretrendszer világába adatbázisok RavenDB dokumentumok lekérdezéseket keresztül LINQ - egy nagyszerű lehetőség a .NET-fejlesztők.
Egyéb keresések támaszkodnak előre teljesítmény - megfelelő sablont nevű térkép / csökkentése (összehasonlítás / csökkenés). Része a folyamatnak kapcsolatos összehasonlítás használja benyújtására, és az általa ellátott feladatok eltérő a különböző adatbázisokban. Összehasonlítás is lehetővé teszi egy adatbázis lekérdezés, hogy osztja a feldolgozó között több processzor. Redukció eredményeként kapott az összehasonlító lépés a lekérdezés (vagy lekérdezések ha kiosztásra került), és az aggregátumok adatokat az eredmények vissza az ügyfélnek.
Térkép / csökkentése - ezt a mintát, és ez végre másképp különböző adatbázisokban. Rob Eston (Rob Ashton) nyújtott egy érdekes összehasonlítást, hogyan RavenDB és CouchDB végre összehasonlítás / csökkentés (bit.ly/94OCME).
Ha RavenDB igényel előre nézetek lekérdezéseket és CouchDB hívhat le csak összehasonlítás / csökkentése, a MongoDB (is használják bemutatása és összehasonlítása / csökkentés) emellett támogatja a speciális igények (ad-hoc lekérdezések). Ugyanakkor képes végrehajtani a speciális kereséseket a legtöbb elvesznek, ha mozdulni a jól ismert áramköröket és relációs természete az SQL adatbázisokat.
Forradalom adatbázisok
Égisze alatt NoSQL elrejti a sok nem-relációs adatbázisok. És most, amikor az ajtó kinyílt, akkor még nagyobb lesz annak arányában, ahogy a programozó tanulni, hogy mi áll majd, hogy az álom, hogy mit lehetne javítani őket. Úgy vélem, hogy RavenDB - remek példa erre, és meg lehet nézni, mint a birodalmi kifejlesztette szerinti adatbázis szándékaik és kívánságait felhasználók.
Úgy tűnik számomra, hogy az intrika körül ezeket a bázisokat fertőző adatokat. Most mélyebbre ásni, és megtanulni az új adatbázisba. De még a három, amit megmondtam érdekel, hogy mit kell választani csak az egyiket nehéz. Most a kíváncsiság hajtja tiszta, nem egy valós üzleti kihívás, és a folyamatban lévő projektek voltam egészen felel relációs adatbázisok.
Szeretném kifejezni hálámat a felülvizsgálat lesz a szakértő Ted Neward (Ted Neward) és Savas Parastatidisu (Savas Parastatidis).