Objektumtár felhőszolgáltatásként

Befejeződött

Most a tárolási rendszerek egy speciális osztályát vizsgáljuk meg, amely interneten szolgáltatott felhőszolgáltatásként lett kialakítva. A felhőbeli objektumtárak az eddigi felhőtárhelyekkel kapcsolatos értekezések fényében a kulcs-érték tárolók speciális, internetes szolgáltatásként nyújtott típusának tekinthetők.

A tár internetes szolgáltatásként való nyújtásához el kell vonatkoztatni a mögöttes tárolási megoldások adatait, és egy egyszerű, letisztult felületet kell biztosítani, amely használható alkalmazásokban. A felhő előnyeit kihasználók egyre nagyobb mértékben döntenek felhőobjektum-modellek mellett a felhőbeli tároláshoz.

Az objektumalapú tárrendszerek magasabb szinten vonatkoztatják el a meglévő fájlrendszeres módszert. Az objektumalapú tárolási rendszerek általában a meglévő fájlrendszerek rétegeire épülnek. Az ilyen tárrendszerekben nincsenek hierarchiák, egyszintű adatkörnyezetet alkalmaznak.

Egy objektum lehet egy általános tároló, amely bármilyen adattípust tárolhat. Az ilyen tetszőleges adatokhoz nehéz kialakítani a felületet, tárolási szempontból azonban könnyen definiálhatók alapszintű műveletek minden objektumhoz. Ezek a műveletek a létrehozás, az olvasás, a frissítés és a törlés (CRUD), amelyek általában REST vagy SOAP típusú hívásokat használó HTTP vagy más hálózati protokolltípussal elérhető API-val használhatók.

REST

A reprezentáción alapuló állapotátvitel (REST) egy állapot nélküli, ügyfél–kiszolgáló típusú, gyorsítótárazható kommunikációs protokollra alapul, és általában HTTP protokollal valósítható meg. Az állapot nélküli protokoll független műveletként kezeli a kéréseket, az ügyfél és a kiszolgáló közti kommunikációt pedig független kérés- és válaszpárként.

A REST egy hálózatba kötött alkalmazások kialakításához használható architektúratípus, és nem egyetlen protokoll. A REST egy hálózatba között alkalmazás entitásainak kommunikációjához készült kialakítási stratégia. A lényege, hogy a CORBA, WSDL vagy RPC helyett egy egyszerű mechanizmussal kapcsolja össze a hálózat gépeit és valósítsa meg az adatátvitelt. A REST-et használó felületeket RESTful-felületeknek nevezzük.

A RESTful-felületek HTTP-kérésekkel küldenek (létrehozás és/vagy frissítés), olvasnak (lekérdezések készítése és adatok beolvasása) és törölnek adatokat. A RESTful-felületek így használhatók CRUD-műveletekhez.

A REST-felületek a következő összetevőkből állnak:

  • Egy egységes erőforrás-azonosító (URI), például egy HTTP URL-cím, amelyen keresztül a szolgáltatás elérhető.
  • Egy internetes médiatípus a szolgáltatás által támogatott adatokhoz (általában XML vagy JSON).
  • A webszolgáltatás által HTTP-metódusokkal támogatott műveletek (GET, PUT, POST és DELETE).
  • Egy HTTP-alapú API.

Egy szolgáltatást egy RESTful-felülettel összekapcsoló program így szabványos HTTP GET, PUT, POST és DELETE kéréseket használhat. A REST-kérésekre hamarosan néhány példát is adunk.

A REST legfőbb előnyei:

  • Egy platformfüggetlen megközelítés, amely ideális internetes környezethez.
  • Egy nyelvtől független felület, hiszen az utasítások HTTP-n keresztül történnek, így például egy C#-ügyfél is kommunikálhat egy Python-kiszolgálóval.
  • Szabványalapú kommunikáció, mivel HTTP-re alapul.
  • Tűzfalak mellett is működik, amíg a HTTP- és HTTPS-forgalom nincs szűrve.

A REST felhőben tárolt adatok elérésére és kezelésére való használatával kapcsolatos további információkért lásd a RESTful webes API-tervezését.

Objektumtároló rendszerek

Az Azure Blob Storage egy példa a felhőbeli objektumalapú tárolásra. A Blob Storage segítségével a felhasználók objektumokat tárolhatnak tárolókban. Minden objektum létrehozható, olvasható és törölhető. Bár nem rendelkezik natív objektumfrissítési metódussal, a teljes Blob Storage-modellben törölhető és újra létrehozható egy teljes objektum a fájlok felülírásához hasonló módon.

Íme egy példa egy RESTful HTTP-hívásra, amely meghívja az Azure Blob Storage-ot, hogy hozzon létre egy mycontainer nevű tárolót. A HTTP-hívás tartalmazza az engedélyezési adatokat, amelyekkel az ügyfél hozzáférhet a gyűjtőhöz.

PUT https://myaccount.blob.core.windows.net/mycontainer?restype=container HTTP/1.1  
  
Request Headers:  
x-ms-version: 2011-08-18  
x-ms-date: Sun, 25 Sep 2011 22:50:32 GMT  
x-ms-meta-Name: StorageSample  
Authorization: SharedKey myaccount:Z5043vY9MesKNh0PNtksNc9nbXSSqGHueE00JdjidOQ=

A Blob Storage feldolgozhatja a kérést, és az alábbi példához hasonló HTTP-választ küld vissza:

Response Status:  
HTTP/1.1 201 Created  
  
Response Headers:  
Transfer-Encoding: chunked  
Date: Sun, 25 Sep 2011 23:00:12 GMT  
ETag: "0x8CB14C3E29B7E82"  
Last-Modified: Sun, 25 Sep 2011 23:00:06 GMT  
x-ms-version: 2011-08-18  
Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0

A válaszban az Azure elismerte a kérést, egy „201 Created” üzenettel jelezve, hogy az sikeres volt, majd visszaküldte a kéréshez kapcsolódó adatokat.

A REST Azure Blob Storage-tal való használatáról további információt a Blob Storage REST API-jával kapcsolatban talál.

Felhőalapú objektumtárolási szabványok: CDMI

A felhőbeli objektumtárolók jelentős hátránya, hogy nem rendelkeznek közös objektumtárolási szabvánnyal.

A Storage Networking Industry Association (SNIA) egy nyílt szabványt próbál népszerűsíteni a felhőobjektumokhoz: ez a Cloud Data Management Interface (CDMI).

CDMI.

22. ábra: CDMI

A CDMI felcímkézett metaadatokkal (kulcs-érték párokkal) definiál adatobjektumokat és adattárolókat, és RESTful-felületeket használ, amelyekben JSON az adatcsere-formátum. A CDMI egy felhőtároló adatainak eléréséhez és kezeléséhez használható (22. ábra). A 23. bemutatja a felhőtárolóval való CDMI-s ügyfél-kommunikációt.

CDMI client interacting with a CDMI storage cloud.

23. ábra: CDMI-ügyfél, amely egy CDMI-tárolófelhővel kommunikál

A CDMI-ügyfél HTTPS-en keresztül küldhet kérelmeket. A MimeType azt a CDMI-erőforrástípust jelzi, amelyet az ügyfél használ (objektum vagy tároló), majd szabványos HTTP-állapotkódokat küld vissza, amelyek a kérés állapotát jelzik.

A 24. ábra bemutatja a CDMI-modellt. A CDMI-erőforrások a gyökérhelyen találhatók, amelyet a gyökér URI-ja jelez: https://<offering>. A példában két tároló (A és B) látható, amelyek egy-egy objektumot tartalmaznak. Minden CDMI-entitás támogatja a metaadatokat. Ezt az entitásokhoz társított kulcs-érték címkék jelzik.

CDMI data model.

24. ábra: A CDMI-adatmodell

A CDMI emellett a következő erőforrástípusokat is támogatja:

  • cdmi-capabilitiy: Egy speciális entitás, amely leírja az adott felhőtár képességeit. Ez az entitás fontos, és a felhő képességeinek felderítésére használható (például biztonsági mentés és replikáció).
  • cdmi-domain: Lehetővé teszi tartományok létrehozását (például objektumhozzáférési engedélyekkel rendelkező felhasználók csoportjait).
  • cdmi-queue: Lehetővé teszi olyan objektumok üzenetsorainak létrehozását, amelyek elsőként kifelé (FIFO) sorrendben működnek. Az alkalmazások ilyen várólistákkal implementálhatják az értesítési vagy üzenetkezelési rendszereket.

A CDMI a következő előnyöket kínálja:

  • A szállítófüggetlen felhőobjektum-tárolási rendszere egyszerűbb adatmigrálást tesz lehetővé a felhők között.
  • Lehetővé teszi a tárolók felhőbeli társhálózat-létesítését, ami azt jelenti, hogy a különböző felhőktől származó erőforrások összekapcsolhatók a zökkenőmentes adatmegosztás érdekében.
  • Megfelel a meglévő szabványoknak, például az adatelérési RESTful-felületeknek, és több mögöttes tárabsztrakcióval is együttműködhet, például megosztott és hálózati fájlrendszerekkel.
  • Ez egy érett szabvány, amely referenciaimplementációval és ISO-szabványosítással is rendelkezik.

A CDMI hátránya, hogy még nem vezették be széles körben. A CDMI szabványt számos tárolási cég támogatja, azonban a legtöbb szállító hivatalosan még nem támogatja, a szabvány eddigi sikere pedig nem egyértelmű.