a sorozat eddig:

  1. SQL Server Graph adatbázisok-1. rész: Bevezetés
  2. SQL Server Graph adatbázisok-2. rész: adatok lekérdezése egy Graph adatbázisban
  3. SQL Server Graph adatbázisok-3. rész: adatok módosítása egy Graph adatbázisban
  4. SQL Server Graph adatbázisok-4. rész: hierarchikus adatok kezelése egy graph adatbázisban
  5. SQL Server Graph adatbázisok-5. rész: Relációs adatok importálása Graph adatbázisba

az SQL Server 2017 kiadásával a Microsoft támogatást nyújtott a graph adatbázisokhoz az összetett entitáskapcsolatokat tartalmazó adatkészletek jobb kezeléséhez, például a közösségi média webhely által generált adatok típusához, ahol a gyakran változó sok-sok kapcsolat keveréke lehet. A gráfadatbázisok ugyanazokat a táblázatszerkezeteket használják, mint a hagyományos SQL Server adatbázisok, és ugyanazokat az eszközöket és T-SQL utasításokat támogatják, de tartalmaznak funkciókat az összetett kapcsolatok tárolására és navigálására is.

ez a cikk az SQL Server graph adatbázisokról szóló sorozat első része. A cikk bemutatja az alapvető graph fogalmakat, és bemutatja, hogyan hozhat létre és tölthet fel grafikontáblákat az SQL Server Management Studio (SSMS) és az SQL Server 2017 helyi példánya segítségével. A következő cikkekben megvizsgáljuk, hogyan lehet lekérdezni egy grafikonadatbázist és módosítani annak adatait, de ehhez a cikkhez az alapokkal kezdjük.

az SQL Server Graph Database

az SQL Server graph adatbázisai egyszerűsíthetik az összetett, sok-sok és hierarchikus kapcsolatokat tartalmazó adatok modellezésének folyamatát. A legalapvetőbb gráfadatbázis olyan csomópontok és élek gyűjteménye, amelyek együtt dolgoznak a különböző típusú kapcsolatok meghatározásában. A csomópont olyan entitás, mint egy személy vagy hely. Az él két entitás közötti kapcsolat. Például kapcsolat létezhet egy olyan hely között, mint Toledo és egy Chris nevű személy, aki Toledóban él. Chris és Toledo az entitások, és a ‘lives in’ a kapcsolat a kettő között.

az SQL Server csomóponttáblája hasonló entitások gyűjteménye, az edge tábla pedig hasonló kapcsolatok gyűjteménye. Annak érdekében, hogy megértsük, hogyan működik ez, fontolja meg a következő ábrán látható grafikonmodellt, amely egy fiktív halbarátok fórumán alapul. A modell három csomópontot (FishSpecies, FishLover és FishPost) és három éleket (Likes, Posts és LinksTo) tartalmaz.

a téglalapok a csomópontokat, a csomópontokat összekötő nyilak pedig az éleket képviselik, a nyilak a kapcsolat irányába mutatnak. Például a Tetszik élek meghatározhatják a következő kapcsolatok bármelyikét:

  • a hal szerelmese szereti a halfajokat.
  • a hal szerelmese szereti a halakról szóló bejegyzést.
  • a hal szerető szereti a másik hal szerető.

mindhárom kapcsolatot adatként ábrázolhatja a gráfadatbázis egyetlen éltáblájában, mindegyik kapcsolat saját sorában. A csomópont tábla nagyjából ugyanúgy működik, kivéve, hogy minden entitáshoz tartalmaz egy sort. A tulajdonságokat mind a csomópontokhoz, mind az élekhez társíthatja. A tulajdonság egy kulcs – érték attribútum, amelyet oszlopként definiálnak egy csomópontban vagy éltáblában. Például a halfaj csomópont tartalmazhat tulajdonságokat az egyes fajok közös és tudományos nevének tárolására. A tulajdonságok felhasználó által definiált oszlopokként jönnek létre a FishSpecies táblázatban. Csomóponttábla létrehozásakor legalább egy tulajdonságot tartalmaznia kell.

a legtöbb műveletnél a node és edge táblák ugyanúgy működnek, mint bármely más SQL Server felhasználó által definiált tábla. Bár van néhány korlátozás—például nem lehet ideiglenes táblákat vagy táblázatváltozókat csomópont—vagy éltáblákként deklarálni-legtöbbször azt tapasztalja, hogy a grafikontáblákkal való munka ismerős terület lesz.

ahol a dolgok kissé tisztázatlanok, az maga a gráfadatbázis. Bár a név arra utalhat, hogy új típusú adatbázis-objektumot hoz létre, ez nem így van. A gráfadatbázis csupán egy felhasználó által definiált adatbázisban definiált logikai konstrukció, amely legfeljebb egy gráfadatbázist támogathat. A gráfadatbázis létezése kívülről viszonylag átlátható, és a legtöbb esetben nem kell aggódnia. Amikor grafikonadatbázisokkal dolgozik, az elsődleges hangsúly a grafikontáblákon és az azokban található adatokon lesz.

a gráfadatbázis általában nem nyújt olyan képességeket, amelyeket a hagyományos relációs funkciók használatával nem lehet elérni. A gráfadatbázis ígérete abban rejlik, hogy bizonyos típusú adatokat hatékonyabban tud rendszerezni és lekérdezni. A Microsoft azt javasolja, hogy a következő körülmények között fontolja meg egy graph-adatbázis bevezetését:

  • elemeznie kell a nagymértékben összekapcsolt adatokat és az adatok közötti kapcsolatokat.
  • összetett, sok-sok kapcsolattal rendelkező adatokat támogat, amelyek folyamatosan fejlődnek.
  • hierarchikus adatokkal dolgozik, miközben a HierarchyID adattípus korlátaiban próbál navigálni.

az SQL Server graph adatbázis-funkciói teljes mértékben integrálva vannak az adatbázis-motorba, kihasználva az olyan összetevőket, mint a lekérdezési processzor és a tárolómotor. Ennek az integrációnak köszönhetően a graph adatbázisokat számos összetevővel együtt használhatja, beleértve a columnstore indexeket, a gépi tanulási szolgáltatásokat, az SSMS-t és számos más funkciót és eszközt.

Gráfcsomóponttáblák meghatározása

az előző ábrán látható modell alapján gráfadatbázis létrehozásához három csomóponttáblát és három éltáblát kell létrehoznia. A Microsoft frissítette a CREATE TABLE utasítást az SQL Server 2017-ben, hogy tartalmazza a táblázattípus meghatározásának lehetőségeit. Mint már említettük, a táblákat bármely felhasználó által definiált adatbázisban létrehozhatja. A cikkben szereplő példákhoz, létrehoztam egy FishGraph nevű alapadatbázist, amint azt a következő T-SQL kód mutatja:

1
2
3
4
5
6

Használja mester;
GO
csepp adatbázis, ha létezik FishGraph;
GO
adatbázis létrehozása FishGraph;
GO

amint látja, nincs itt semmi különös. Az adatbázist ugyanúgy hozza létre, mint bármely más felhasználó által definiált adatbázist. Nincs semmi különös, amit meg kell tennie, hogy állítsa be, hogy támogassa a grafikon adatbázis.

ha azt tervezi, hogy próbálja ki ezeket a példákat magad, akkor a FishGraph adatbázis vagy egy saját választott. Bármit is dönt, a következő lépés a FishSpecies csomópont tábla létrehozása a következő CREATE TABLE utasítás használatával:

1
2
3
4
5
6
7
8
9

használja FishGraph;
GO
DROP táblázat, ha létezik Fishfajok;
GO
Táblázat létrehozása Fishfajok (
FishID Int identitás elsődleges kulcs,
CommonName NVARCHAR(100) nem nulla,
tudományos név nvarchar(100) nem nulla
) mint csomópont;

az oszlopdefinícióknak meglehetősen egyértelműeknek kell lenniük. Itt fontos az AS csomópont záradék, amelyet fel kell venni egy csomóponttábla létrehozásához. Amikor megadja ezt a záradékot, az adatbázismotor két oszlopot ad hozzá a táblához (amelyhez hamarosan eljutunk), és létrehoz egy egyedi, nem fürtözött indexet az oszlopok egyikén.

a rendszer lekérdezésével ellenőrizheti, hogy a tábla csomóponttáblaként lett-e létrehozva.táblázatok megtekintése. Az SQL Server 2017 kiadásával a Microsoft frissítette a nézetet, hogy tartalmazza az is_node és az is_edge bit oszlopokat. Ha a táblázat csomóponttábla, akkor az is_node oszlop értéke 1, az is_edge oszlop értéke pedig 0. Ha egy éltáblázat, az értékek megfordul. A következő példa a nézetet használja annak megerősítésére, hogy a halfajok táblázat helyesen lett definiálva:

1
2

válassza az is_node, is_edge lehetőséget a sys-ből.táblázatok
ahol name = ‘halfaj’;

a SELECT utasítás a következő ábrán látható eredményeket adja vissza, amelyek azt jelzik, hogy a halfaj csomóponttáblázatként jött létre.

a Microsoft frissítette a sys-t is.oszlopok nézet, hogy tartalmazza a graph_type és graph_type_desc oszlopokat. A nézet és az új oszlopok segítségével többet megtudhat a halfajok tábláról:

1
2
3

válassza a név, graph_type, graph_type_desc
lehetőséget a sys-ből.oszlopok
ahol object_id = OBJECT_ID (‘halfaj’);

az alábbi ábra a FishSpecies táblához létrehozott oszlopokat mutatja.

csomóponttábla létrehozásakor az adatbázismotor hozzáadja a graph_id_< hex_string>és $node_id_< hex_string> oszlopokat, és létrehoz egy egyedi, nem fürtözött indexet a $node_id oszlopon. Az adatbázismotor az első oszlopot használja a belső műveletekhez, a második oszlopot pedig elérhetővé teszi a külső hozzáféréshez. A $node_id oszlop minden entitáshoz egyedi azonosítót tárol, amelyet az adatok lekérdezésekor tekinthet meg. Ez az egyetlen oszlop a kettő közül, amellyel foglalkoznia kell. Valójában, ha közvetlenül lekérdezné a táblázatot, akkor csak a $node_id oszlopot látná, a graph_id oszlopot nem.

a rendszer által visszaadott graph_type és graph_type_desc oszlopok.az oszlopok nézet a grafikontáblázat automatikusan generált oszlopaira vonatkozik. Az oszlopok az adatbázismotor által létrehozott oszlopok típusait jelzik. A típust egy előre meghatározott számérték és a hozzá tartozó leírás jelzi. A Microsoft nem ad sok részletet ezekről a kódokról és leírásokról, de néhány részletet megtalálhat a Microsoft document SQL Graph Architecture-ben. Ismét az elsődleges gond a $node_id oszlop és az abban található adatok.

a Táblázat létrehozása után elkezdheti az adatok hozzáadását. Az INSERT utasítás futtatása egy csomóponttáblával szemben ugyanúgy működik, mint bármely más tábla. A céloszlopokat és azok értékeit a következő példa szerint adhatja meg:

1
2
3
4
5
6
7
8
9
10
11

INSERT INTO FishSpecies (CommonName, ScientificName) VALUES
(‘Atlantic halibut’, ‘Hippoglossus hippoglossus’),
(‘Chinook salmon’, ‘Oncorhynchus tshawytscha’),
(‘European seabass’, ‘Morone (Decentrarchus) labrax’),
(‘Gizzard shad’, ‘Dorosoma cepedianum’),
(‘Japanese striped knife jaw’, Oplegnathus faciatus’),
(‘Északi csuka’, ‘Esox lucius’),
(‘csendes-óceáni hering’, ‘Clupea pallasi’),
(‘szivárványos pisztráng’, ‘Oncorhynchus mykiss’),
(‘közönséges nyelvhal (Dover)’, ‘Solea solea’),
(‘fehér basszus’, ‘Morone chrysops’);

természetesen hozzáadhat bármilyen halfajt, amelyet különösen szeret. A döntéseim teljesen önkényesek voltak. De ha ragaszkodik az adataimhoz, majd lekérdezi a FishSpecies táblázatot, az eredményeknek hasonlónak kell lenniük a következő ábrán láthatókhoz.

mint fentebb említettük, a graph_id oszlop nem jelenik meg az eredményekben, de a $node_id oszlop Igen, automatikusan generált értékekkel kiegészítve. Az adatbázismotor minden értéket JSON karakterláncként hoz létre, amely megadja a típust (csomópont vagy él), sémát, táblát és az egyes sorokhoz tartozó BIGINT értéket. Ahogy az várható volt, az adatbázismotor a felhasználó által definiált oszlopok értékeit is visszaadja, akárcsak egy tipikus relációs tábla.

a következő lépés a FishLover csomópont tábla létrehozása és feltöltése a következő T-SQL kód használatával:

1
2
3
4
5
6
7
8
9
10
11
12

DROP tábla, ha létezik FishLover;
GO
Táblázat létrehozása FishLover (
FishLoverID Int identitás elsődleges kulcs,
felhasználónév NVARCHAR (50) nem nulla,
) csomópontként;
beszúrása FishLover (felhasználónév) értékek
(‘powerangler’),
(‘jessie98’),
(‘akasztott’),
(‘deepdive’),
(‘underwatercasey’);

a táblázat csak két felhasználó által definiált oszlopot tartalmaz-FishLoverID és UserName—, de megadhat annyi oszlopot, amennyire szükséges. Előfordulhat például, hogy az alkalmazás jellegétől függően meg szeretné adni a vezeték-és utóneveket, a kapcsolattartási adatokat és egyéb adatokat. Miután létrehozta a táblát, futtathat egy lekérdezést az adatok ellenőrzéséhez. Az eredményeknek hasonlónak kell lenniük az alábbi ábrán látható eredményekhez.

ezután ugyanazokat a lépéseket teheti meg a FishPost tábla létrehozásához és feltöltéséhez, bármilyen üzenetszöveget átadva:

1
2
3
4
5
6
7
8
9
10
11
12
13

DROP táblázat, ha létezik FishPost;
GO
Táblázat létrehozása FishPost (
PostID Int identitás elsődleges kulcs,
cím NVARCHAR(50) nem nulla,
Üzenetszöveg NVARCHAR(800) nem nulla
) csomópontként;
beszúrása fishpost (cím, MESSAGETEXT) értékek
(‘az egyik, hogy megúszta’, ‘csapatunk elérhető, kérjük lépjen kapcsolatba velünk. Aeneas előny fenntartott igények.’),
(‘tanulmány a halakról’, ‘ penatibus venenatis, nascetur ridiculus mus.’),
(‘Hook, line and sinker’, ‘ Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu.’),
(‘olyan sok hal, olyan kevés idő’, ‘ Nullam dictum felis eu pede mollis pretium. Egész tincidunt.’),
(‘kedvenc halam’, ‘ Aenean leo ligula, porttitor eu, consequat vitae, eleifend ac, enim.’);

az alábbi ábra azokat az eredményeket mutatja, amelyeket akkor látna, ha ragaszkodna a Lorem Ipsum adatokhoz.

ez minden, ami a csomóponttáblák létrehozásához és feltöltéséhez szükséges. Kivéve az AS csomópont záradékot a CREATE TABLE utasításban, a legtöbb minden más a szokásos módon működik.

Gráféltáblák meghatározása

éltáblázat létrehozása hasonló a csomóponttábla létrehozásához, azzal a különbséggel, hogy meg kell adnia az AS ÉLZÁRADÉKOT az AS csomópont záradék helyett. A bejegyzések tábla létrehozásához például a következő CREATE TABLE utasítást használja:

1
2
3
4
5

DROP táblázat, ha létezik hozzászólás;
GO
táblázatos bejegyzések létrehozása (
fontos Flag BIT nem nulla alapértelmezett 0
) ;

a táblázat definíciója hasonló a csomóponttáblához, azzal a különbséggel, hogy nem tartalmaz elsődleges kulcs oszlopot (és természetesen az AS EDGE záradékot veszi fel). Ebben az esetben nincs szükség elsődleges kulcsra, de ha valamikor úgy dönt, hogy elsődleges kulcsra van szüksége, akkor biztosan hozzáadhat egyet. (Hamarosan látni fogja, hogy az elsődleges kulcsok miért hasznosak a csomóponttáblákhoz.)

vegye figyelembe, hogy a táblázat meghatározása magában foglalja a fontos zászló oszlopot is. Ezt elsősorban annak bemutatására vettem fel, hogy Felhasználó által definiált oszlopokat adhat hozzá az edge táblához, akárcsak a csomópont táblákhoz. Ennek ellenére nem ritka, hogy éltáblát hoz létre felhasználó által definiált oszlopok nélkül, ellentétben a csomóponttáblával, amelynek legalább egy felhasználó által definiált oszlopot kell tartalmaznia.

az edge tábla létrehozása után a rendszer lekérdezésével ellenőrizheti, hogy helyesen lett-e definiálva.táblázatok nézet, ahogy korábban látta:

1
2

válassza az is_node, is_edge lehetőséget a sys-ből.táblázatok
WHERE name = ‘Hozzászólások’;

ha mindent jól csináltál, az eredményeknek úgy kell kinézniük, mint a következő ábrán.

lekérdezheti a sys-t is.táblázatok megtekintése az oszlop részleteinek ellenőrzéséhez, akárcsak korábban:

1
2
3

válassza a név, graph_type, graph_type_desc
lehetőséget a sys-ből.oszlopok
ahol object_id = OBJECT_ID (‘Hozzászólások’);

az alábbi ábra a rendszeremen visszaküldött eredményeket mutatja.

mint látható, az adatbázismotor nyolc oszlopot ad hozzá egy éltáblához, nem pedig a csomóponttáblákkal látott kettőt. Az egyes oszloptípusok leírását ismét az SQL Graph Architecture dokumentumban találja. Ezen oszlopok többségét az adatbázismotor használja a belső műveletekhez. Elsősorban a következő három oszlopmal kell foglalkoznia:

  • a $edge_id_< hex_string> oszlop egyedileg azonosítja az egyes kapcsolatokat.
  • a $from_id_< hex_string> oszlop tárolja az entitáshoz társított $node_id értéket abban a táblázatban, ahonnan a kapcsolat származik.
  • a $to_id_< hex_string> oszlop tárolja az entitáshoz társított $node_id értéket abban a táblázatban, ahol a kapcsolat véget ér.

a csomóponttáblázat $node_id oszlopához hasonlóan az adatbázismotor automatikusan generálja a $edge_id oszlop értékeit. A kapcsolat meghatározásához azonban külön értékeket kell hozzáadnia a $from_id és a $to_id oszlopokhoz. Annak bemutatására, hogy ez hogyan működik, egyetlen rekorddal kezdjük:

1
2
3

helyezze be a bejegyzésekbe ($from_id, $to_id) értékeket (
(válassza a $ node_id lehetőséget a FishLover-ből, ahol a FishLoverID = 1),
(válassza ki a $ node_id elemet a FishPost-ból, ahol PostID = 3));

az INSERT utasítás kapcsolatot határoz meg a Posts táblázatban egy FishLover entitás között, amelynek FishLoverID értéke 1 és egy FishPost entitás között, amelynek PostID értéke 3. Figyeld meg, hogy a $node_id, a $from_id és a $to_id álneveket használhatod a céloszlopokra való hivatkozáshoz anélkül, hogy a hexa karakterláncokkal kellene előállnod.

ha adatokat szeretne hozzáadni a $from_id oszlophoz, meg kell adnia a FishLover entitáshoz társított $node_id értéket. Ennek az értéknek az egyik módja az, ha tartalmaz egy allekérdezést, amely az entitást célozza meg annak elsődleges kulcsértékével. Ugyanezt a megközelítést alkalmazhatja a $from_id oszlopban is.

az adatok ilyen módon történő beszúrása megmutatja, miért hasznos elsődleges kulcsokat hozzáadni a csomóponttáblákhoz, de nem szükséges az éltáblákhoz. A csomóponttáblák elsődleges kulcsai sokkal könnyebbé teszik a $node_id érték megadását az INSERT utasításhoz.

ha most lekérdezi a hozzászólások táblázatot, az eredményeknek hasonlónak kell lenniük az alábbi ábrán láthatóhoz.

a táblázatnak tartalmaznia kell az új kapcsolatot, a Fontosflag értéke 0, Az alapértelmezett. Most hozzáadhat még néhány sort a következő beszúrási utasítások használatával:

1
2
3
4
5
6
7
8
9
10
11
12

helyezze be a bejegyzésekbe ($from_id, $to_id) értékeket (
(válassza a $ node_id lehetőséget a FishLover-ből, ahol a FishLoverID = 3),
(válassza $node_id származó FishPost ahol PostID = 2));
beszúrása a hozzászólások ($from_id, $to_id) értékek (
(válassza $node_id származó FishLover ahol FishLoverID = 2),
(válassza ki a $ node_id elemet a FishPost-ból, ahol PostID = 5));
helyezze be a hozzászólásokba ($from_id, $to_id, fontos Flag) értékeket (
(válassza ki a $ node_id-t a FishLover-ből, ahol a FishLoverID = 5),
(válassza ki a $ node_id elemet a FishPost-ból, ahol PostID = 4), 1);
helyezze be a bejegyzésekbe ($from_id, $to_id, fontos Flag) értékeket (
(válassza ki a $ node_id-t a FishLover-ből, ahol a FishLoverID = 4),
(válassza ki a $ node_id elemet a FishPost-ból, ahol PostID = 1), 1);

vegye figyelembe, hogy az utolsó két INSERT utasítás a fontos Flag oszlop értékét is megadja. Amikor lekérdezi a hozzászólások táblázatot, az eredményeknek mind az öt sort tartalmazniuk kell.

a következő lépés a lájkok tábla létrehozása és feltöltése a következő T-SQL kód használatával:

1
2
3
4
5
6
7
8
9
10
11
12

DROP táblázat, ha létezik tetszik;
GO
hozzon létre táblázatot szeret, mint él;
beszúrása tetszik ($from_id, $to_id) értékek (
(válassza $node_id származó FishLover ahol FishLoverID = 3),
(válassza ki a $node_id elemet a halfajokból, ahol FishID = 8));
helyezze be a Lájkokba ($from_id, $to_id) értékeket (
(válassza ki a $ node_id értéket a FishLover-ből, ahol a FishLoverID = 5),
(válassza ki a $ node_id elemet a FishPost-ból, ahol PostID = 4));
helyezze be tetszik ($from_id, $to_id) értékek (
(válassza $node_id származó FishLover ahol FishLoverID = 1),
(válassza ki a $ node_id elemet a FishLover-ből, ahol a FishLoverID = 4));

természetesen meghatározhatja a kívánt kapcsolatokat. Fontos megjegyezni, hogy nem korlátozódik egyetlen csomópontra sem. Például az első INSERT utasítás kapcsolatot hoz létre a FishLover és a FishSpecies között, a második állítás kapcsolatot hoz létre a FishLover és a FishPost között, a harmadik állítás pedig a FishLover és a FishLover között. Ez megadja nekünk a következő ábrán látható lekérdezési eredményeket.

ugyanezt a megközelítést alkalmazhatja a LinksTo táblázat létrehozásakor és feltöltésekor is:

1
2
3
4
5
6
7
8
9
10
11
12

DROP tábla, ha létezik LinksTo;
GO
Táblázat létrehozása LinksTo mint EDGE;
beszúrása LinksTo ($from_id, $to_id) értékek (
(válassza $node_id származó FishPost ahol PostID = 2),
(válassza ki a $node_id elemet a halfajokból, ahol FishID = 6));
helyezze be a LinksTo ($from_id, $to_id) értékeket (
(válassza ki a $ node_id értéket a FishPost-ból, ahol PostID = 4),
(válassza ki a $ node_id elemet a FishLover-ből, ahol a FishLoverID = 1));
helyezze be a LinksTo ($from_id, $to_id) értékek (
(válassza $node_id származó FishPost ahol PostID = 3),
(válassza ki a $ node_id elemet a FishPost-ból, ahol PostID = 5));

az alábbi ábra azt mutatja, hogy az adatoknak hogyan kell kinézniük a táblázathoz való hozzáadás után, feltételezve, hogy követte a példát.

a gráfadatbázis segítségével a kiinduló és a végződő csomópontok közötti kapcsolatok széles skáláját adhatja hozzá. Könnyen beépítheti a gráfmodell módosításait is. Például dönthet úgy, hogy hozzáad egy FishRecipes csomóponttáblát a felhasználók által a fórumba közzétett halreceptek tárolásához, ebben az esetben kihasználhatja a meglévő bejegyzéseket, kedveléseket és linksto edge táblákat.

Továbblépés a Graph adatbázisokkal

mivel a Microsoft az SQL Server adatbázis-motor részeként tartalmazza a graph adatbázis-funkciókat, könnyen kipróbálhatja őket anélkül, hogy bármilyen összetevőt telepítenie vagy újrakonfigurálnia kellene. A legjobb az egészben, hogy ugyanazokat az eszközöket és eljárásokat használhatja, amelyeket mindvégig használt a csomópont-és éltáblák létrehozásához és feltöltéséhez. A következő cikkekben bemutatjuk, hogyan lehet lekérdezni és módosítani a grafikonadatokat, és közelebbről megvizsgáljuk a hierarchikus adatokkal való munkát, ezért ügyeljen arra, hogy maradjon velünk.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.