Programozási modell
A GraphLab adatmodelljéből ismert, hogy a gráfok több gépre vannak particionálva. A GAS függvények egyes csúcsokon történő végrehajtása során fennáll a közös hatókörű csúcsok közötti olvasás-írás és írás-írás ütközés lehetősége. A GraphLab-motor szinkronizálja a megosztott adathozzáféréseket és gondoskodik a konzisztens párhuzamos végrehajtásról. A GraphLab több gráfvégrehajtási motort is támogat, melyek mindegyikét más szintű konzisztencia jellemzi, így a felhasználók kiválaszthatják az alkalmazásik helyességéhez és teljesítményéhez megfelelő motort. A GraphLab különböző motorok által kínált konzisztencia-szintjeinek megnevezése a következő: teljes konzisztencia, élkonzisztencia és csúcskonzisztencia. Teljes konzisztencia esetén, ahogyan a 8. ábrán látható, az egy csúcsot (csúcs 3) módosító függvény kizárólagos olvasási-írási hozzáféréssel rendelkezik a saját csúcsára, a csatlakozó élekre és a szomszédos csúcsokra (a teljes hatókörére) vonatkozóan. Ez a megoldás erős konzisztenciát és teljes helyességet garantál, de korlátozza a párhuzamosságot és ennek következtében a teljesítményt is. A csúcsok azonban sok MLDM-algoritmusban nem igényelnek kizárólagos olvasási-írási hozzáférést a teljes hatókörükhöz. A PageRank algoritmus például csak olvasási hozzáférést igényel a szomszédos élekhez és csúcsokhoz.
Emiatt a párhuzamosság növelése és a különböző MLDM-algoritmusokhoz illő konzisztencia-beállítások tágabb körének támogatása érdekében a GraphLab az élkonzisztenciát és a csúcskonzisztenciát is ismeri. Élkonzisztencia esetén az egy csúcsot módosító függvénynek kizárólagos olvasási-írási hozzáférése van a csúcshoz és a csatlakozó élekhez, de csak olvasási hozzáférése a szomszédos csúcsokhoz. Ez a protokoll egyértelműen gyengíti a konzisztenciát, és a párhuzamosság jobb kihasználását teszi lehetővé. Csúcskonzisztencia esetén az egy csúcsot módosító függvény csak a saját csúcsához rendelkezik kizárólagos írási hozzáféréssel, így az összes módosító függvény egyidejűleg futhat. Ez a képesség kínálja a legnagyobb elérhető párhuzamosságot, de ennek áraként a leggyengébb konzisztenciát is. A GraphLab felhasználói kiválaszthatják azt a motort, amely megvalósítja az alkalmazásaikhoz jól használhatónak ítélt konzisztenciamodell és a teljesítmény egyensúlyát.
8. ábra: A GraphLab által garantált teljes konzisztencia, élkonzisztencia és csúcskonzisztenciamodellek. A teljes konzisztencia modell a legerősebb, a csúcskonzisztencia pedig a leggyengébb. A gyengébb konzisztencia jobb párhuzamossággal jár és fordítva.
A megosztott memória szemlélet részeként a GraphLab a helyi memóriákban tárolja a szellemeket. A szellemek az egyes csúcsok szomszédossági információi és adatai. A csúcsokban a szellemek biztosítják, hogy a csúcs módosító függvénye közvetlenül a memóriában férjen hozzá a hatókörén belüli összes adathoz.