Ամազոնի Նեպտունի առաջին տպավորությունները

Ողջույն Խաբրովսկի բնակիչներ։ Դասընթացի մեկնարկին ընդառաջ «AWS մշակողների համար» Հետաքրքիր նյութի թարգմանություն ենք պատրաստել։

Ամազոնի Նեպտունի առաջին տպավորությունները

Օգտագործման շատ դեպքերում, որոնք մեզ դուր են գալիս բակդատաԻնչպես տեսնում ենք մեր հաճախորդների վեբկայքերում, համապատասխան տեղեկատվությունը թաքնված է սուբյեկտների միջև կապերում, օրինակ՝ օգտվողների միջև հարաբերությունները, տարրերի միջև կախվածությունը կամ սենսորների միջև կապերը վերլուծելիս: Նման օգտագործման դեպքերը սովորաբար մոդելավորվում են գրաֆիկի վրա: Այս տարվա սկզբին Amazon-ը թողարկեց իր նոր գրաֆիկական տվյալների բազան՝ Neptune-ը: Այս գրառման մեջ մենք ցանկանում ենք կիսվել մեր առաջին գաղափարներով, լավ պրակտիկաներով և այն, ինչ կարելի է բարելավել ժամանակի ընթացքում:

Ինչու՞ մեզ անհրաժեշտ էր Amazon Neptune-ը

Գրաֆիկական տվյալների բազաները խոստանում են ավելի լավ մշակել շատ կապված տվյալների հավաքածուները, քան դրանց հարաբերական համարժեքները: Նման տվյալների հավաքածուներում համապատասխան տեղեկատվությունը սովորաբար պահվում է օբյեկտների միջև հարաբերություններում: Մենք օգտագործեցինք զարմանալի բաց տվյալների նախագիծ Նեպտունի փորձարկման համար MusicBrainz- ը. MusicBrainz-ը հավաքում է ցանկացած տեսակի երաժշտության մետատվյալ, որը կարելի է պատկերացնել, օրինակ՝ արտիստների, երգերի, ալբոմների թողարկումների կամ համերգների մասին տեղեկություններ, ինչպես նաև, թե ում հետ է համագործակցել երգի հետևում կանգնած կատարողը կամ երբ է ալբոմը թողարկվել որ երկրում: MusicBrainz-ը կարելի է դիտարկել որպես սուբյեկտների հսկայական ցանց, որոնք ինչ-որ կերպ կապված են երաժշտական ​​արդյունաբերության հետ:

MusicBrainz տվյալների բազան տրամադրվում է որպես հարաբերական տվյալների բազայի CSV աղբանոց: Ընդհանուր առմամբ, աղբավայրը պարունակում է մոտ 93 միլիոն տող 157 աղյուսակներում: Մինչդեռ այս աղյուսակներից մի քանիսը պարունակում են հիմնական տվյալներ, ինչպիսիք են արտիստները, իրադարձությունները, ձայնագրությունները, թողարկումները կամ հետքերը և այլն կապող աղյուսակներ — պահպանել հարաբերությունները արվեստագետների և ձայնագրությունների, այլ կատարողների կամ թողարկումների միջև և այլն... Նրանք ցույց են տալիս տվյալների հավաքածուի գրաֆիկական կառուցվածքը: Տվյալների հավաքածուն RDF եռակի վերածելիս մենք ստացանք մոտավորապես 500 միլիոն օրինակ:

Հիմնվելով ծրագրի գործընկերների փորձի և տպավորությունների վրա, որոնց հետ մենք աշխատում ենք, մենք ներկայացնում ենք մի միջավայր, որտեղ այս գիտելիքների բազան օգտագործվում է նոր տեղեկատվություն ստանալու համար: Բացի այդ, մենք ակնկալում ենք, որ այն պարբերաբար կթարմացվի, օրինակ՝ ավելացնելով նոր թողարկումներ կամ թարմացնելով խմբի անդամներին:

հարմարեցում

Ինչպես և սպասվում էր, Amazon Neptune-ի տեղադրումը պարզ է: Նա բավականին մանրամասն է փաստագրված. Դուք կարող եք գործարկել գրաֆիկական տվյալների բազա ընդամենը մի քանի կտտոցով: Այնուամենայնիվ, երբ խոսքը վերաբերում է ավելի մանրամասն կազմաձևմանը, անհրաժեշտ տեղեկատվություն դժվար է գտնել: Հետևաբար, մենք ցանկանում ենք մատնանշել կազմաձևման մեկ պարամետր:

Ամազոնի Նեպտունի առաջին տպավորությունները
Պարամետրերի խմբերի կազմաձևման սքրինշոթ

Amazon-ն ասում է, որ Neptune-ը կենտրոնանում է ցածր լատենտային գործարքների ծանրաբեռնվածության վրա, ինչի պատճառով էլ լռելյայն հարցման ժամկետը 120 վայրկյան է: Այնուամենայնիվ, մենք փորձարկել ենք բազմաթիվ վերլուծական օգտագործման դեպքեր, որոնցում մենք պարբերաբար հասել ենք այս սահմանին: Այս ժամկետը կարող է փոխվել՝ ստեղծելով նոր պարամետրային խումբ Նեպտունի համար և կարգավորելով neptune_query_timeout համապատասխան սահմանափակում։

Տվյալների բեռնում

Ստորև մենք մանրամասն կքննարկենք, թե ինչպես ենք բեռնել MusicBrainz-ի տվյալները Նեպտունում:

Հարաբերություններ երեքով

Նախ, մենք MusicBrainz-ի տվյալները վերափոխեցինք RDF եռակի: Հետևաբար, յուրաքանչյուր աղյուսակի համար մենք սահմանեցինք ձևանմուշ, որը սահմանում է, թե ինչպես է յուրաքանչյուր սյունակ ներկայացված եռյակում: Այս օրինակում կատարողների աղյուսակի յուրաքանչյուր տող քարտեզագրված է տասներկու RDF եռակի:

<http://musicbrainz.foo/artist/${id}> <http://musicbrainz.foo/gid> "${gid}"^^<http://www.w3.org/2001/XMLSchema#string> .
 
 
<http://musicbrainz.foo/artist/${id}> <http://musicbrainz.foo/name> "${name}"^^<http://www.w3.org/2001/XMLSchema#string> .
 
<http://musicbrainz.foo/artist/${id}> <http://musicbrainz.foo/sort-name> "${sort_name}"^^<http://www.w3.org/2001/XMLSchema#string> .
 
<http://musicbrainz.foo/artist/${id}> <http://musicbrainz.foo/begin-date> "${begin_date_year}-${begin_date_month}-${begin_date_day}"^^xsd:<http://www.w3.org/2001/XMLSchema#date> .
 
<http://musicbrainz.foo/artist/${id}> <http://musicbrainz.foo/end-date> "${end_date_year}-${end_date_month}-${end_date_day}"^^xsd:<http://www.w3.org/2001/XMLSchema#date> .
 
<http://musicbrainz.foo/artist/${id}> <http://musicbrainz.foo/type> <http://musicbrainz.foo/artist-type/${type}> .
 
<http://musicbrainz.foo/artist/${id}> <http://musicbrainz.foo/area> <http://musicbrainz.foo/area/${area}> .
 
<http://musicbrainz.foo/artist/${id}> <http://musicbrainz.foo/gender> <http://musicbrainz.foo/gender/${gender}> .
 
<http://musicbrainz.foo/artist/${id}> <http://musicbrainz.foo/comment> "${comment}"^^<http://www.w3.org/2001/XMLSchema#string> .
 
<http://musicbrainz.foo/artist/${id}> <http://musicbrainz.foo/edits-pending> "${edits_pending}"^^<http://www.w3.org/2001/XMLSchema#int> .
 
<http://musicbrainz.foo/artist/${id}> <http://musicbrainz.foo/last-updated> "${last_updated}"^^<http://www.w3.org/2001/XMLSchema#dateTime> .
 
<http://musicbrainz.foo/artist/${id}> <http://musicbrainz.foo/ended> "${ended}"^^<http://www.w3.org/2001/XMLSchema#boolean> .

Զանգվածային վերբեռնում

Նեպտունում մեծ քանակությամբ տվյալներ բեռնելու առաջարկվող եղանակը S3-ի միջոցով զանգվածային վերբեռնման գործընթացն է: Ձեր եռակի ֆայլերը S3 վերբեռնելուց հետո դուք սկսում եք վերբեռնումը՝ օգտագործելով POST հարցումը: Մեր դեպքում 24 միլիոն եռյակի համար պահանջվեց մոտ 500 ժամ: Մենք սպասում էինք, որ այն ավելի արագ կլինի:

curl -X POST -H 'Content-Type: application/json' http://your-neptune-cluster:8182/loader -d '{
 
 
 "source" : "s3://your-s3-bucket",
 
 "format" : "ntriples",
 
 "iamRoleArn" : "arn:aws:iam::your-iam-user:role/NeptuneLoadFromS3",
 
 "region" : "eu-west-1",
 
 "failOnError" : "FALSE"
 
}'

Այս երկարատև գործընթացից խուսափելու համար ամեն անգամ, երբ մենք գործարկում ենք Նեպտունը, մենք որոշեցինք վերականգնել օրինակը մի լուսանկարից, որում այս եռյակներն արդեն բեռնված էին: Պատկերից վազելը զգալիորեն ավելի արագ է, բայց դեռ տևում է մոտ մեկ ժամ, մինչև Նեպտունը հասանելի լինի հարցումների համար:

Սկզբում եռյակներին Նեպտուն բեռնելիս մենք հանդիպեցինք տարբեր սխալների:

{
 
 
 "errorCode" : "PARSING_ERROR",
 
 "errorMessage" : "Content after '.' is not allowed",
 
 "fileName" : [...],
 
 "recordNum" : 25
 
}

Նրանցից ոմանք վերլուծության սխալներ էին, ինչպես ցույց է տրված վերևում: Մինչ օրս մենք դեռ չենք պարզել, թե կոնկրետ ինչն է սխալ այս պահին: Մի փոքր ավելի մանրամասն այստեղ հաստատ կօգնի: Այս սխալը տեղի է ունեցել ներդրված եռյակների մոտավորապես 1%-ի համար: Բայց ինչ վերաբերում է Նեպտունի փորձարկմանը, մենք ընդունեցինք այն փաստը, որ մենք աշխատում ենք MusicBrainz-ի տեղեկատվության միայն 99%-ի հետ:

Թեև դա հեշտ է SPARQL-ին ծանոթ մարդկանց համար, տեղյակ եղեք, որ RDF եռյակները պետք է ծանոթագրվեն բացահայտ տվյալների տեսակներով, ինչը կրկին կարող է առաջացնել սխալներ:

Հոսքային ներբեռնում

Ինչպես նշվեց վերևում, մենք չենք ցանկանում օգտագործել Նեպտունը որպես ստատիկ տվյալների պահեստ, այլ ավելի շուտ որպես ճկուն և զարգացող գիտելիքների բազա: Այսպիսով, մենք պետք է գտնեինք նոր եռյակներ ներկայացնելու ուղիներ, երբ գիտելիքների բազան փոխվում է, օրինակ, երբ նոր ալբոմ է հրատարակվում կամ երբ մենք ցանկանում ենք նյութականացնել ստացված գիտելիքները:

Neptune-ն աջակցում է մուտքային օպերատորներին SPARQL հարցումների միջոցով՝ ինչպես հում, այնպես էլ նմուշի վրա հիմնված: Ստորև մենք կքննարկենք երկու մոտեցումները:

Մեր նպատակներից մեկը տվյալների հոսքային եղանակով մուտքագրումն էր: Մտածեք նոր երկրում ալբոմ թողարկելու մասին: MusicBrainz-ի տեսանկյունից սա նշանակում է, որ ալբոմներ, սինգլներ, EP-ներ և այլն ներառող թողարկման համար աղյուսակում ավելացվում է նոր գրառում։ ազատում-երկիր. RDF-ում մենք այս տեղեկատվությունը համընկնում ենք երկու նոր եռակի հետ:

INSERT DATA { <http://musicbrainz.foo/release-country/737041> <http://musicbrainz.foo/release> <http://musicbrainz.foo/release/435759> };INSERT DATA { <http://musicbrainz.foo/release-country/737041> <http://musicbrainz.foo/date-year> "2018"^^<http://www.w3.org/2001/XMLSchema#int> };

Մյուս նպատակը գրաֆիկից նոր գիտելիքներ ստանալն էր։ Ենթադրենք, մենք ուզում ենք ստանալ յուրաքանչյուր արտիստի թողարկումների քանակը իր կարիերայի ընթացքում: Նման հարցումը բավականին բարդ է և Նեպտունում տևում է ավելի քան 20 րոպե, ուստի մենք պետք է արդյունքը նյութականացնենք, որպեսզի այս նոր գիտելիքը նորից օգտագործենք որևէ այլ հարցում: Այսպիսով, մենք այս տեղեկատվությամբ եռապատիկ ենք ավելացնում գրաֆիկին` մուտքագրելով ենթհարցման արդյունքը:

INSERT {
 
 
  ?artist_credit <http://musicbrainz.foo/number-of-releases> ?number_of_releases
 
} WHERE {
 
  SELECT ?artist_credit (COUNT(*) as ?number_of_releases)
 
  WHERE {
 
     ?artist_credit <http://musicbrainz.foo/rdftype> <http://musicbrainz.foo/artist-credit> .
 
     ?release_group <http://musicbrainz.foo/artist-credit> ?artist_credit .
 
     ?release_group <http://musicbrainz.foo/rdftype> <http://musicbrainz.foo/release-group> .
 
     ?release_group <http://musicbrainz.foo/name> ?release_group_name .
 
  }
 
  GROUP BY ?artist_credit
 
}

Գրաֆիկին առանձին եռապատիկներ ավելացնելը տևում է մի քանի միլիվայրկյան, մինչդեռ ենթհարցման արդյունքը տեղադրելու կատարման ժամանակը կախված է բուն ենթահարկի կատարման ժամանակից:

Թեև մենք հաճախ չէինք օգտագործում այն, Նեպտունը նաև թույլ է տալիս հեռացնել եռյակները՝ հիմնվելով նմուշների կամ բացահայտ տվյալների վրա, որոնք կարող են օգտագործվել տեղեկատվության թարմացման համար:

SPARQL հարցումներ

Ներկայացնելով նախորդ ենթանմուշը, որը վերադարձնում է յուրաքանչյուր նկարչի թողարկումների քանակը, մենք արդեն ներկայացրել ենք հարցման առաջին տեսակը, որին ցանկանում ենք պատասխանել՝ օգտագործելով Neptune-ը: Neptune-ում հարցում ստեղծելը հեշտ է. ուղարկեք POST հարցում SPARQL վերջնակետին, ինչպես ցույց է տրված ստորև.

curl -X POST --data-binary 'query=SELECT ?artist ?p ?o where {?artist <http://musicbrainz.foo/name> "Elton John" . ?artist ?p ?o . }' http://your-neptune-cluster:8182/sparql

Բացի այդ, մենք իրականացրել ենք հարցում, որը վերադարձնում է նկարչի պրոֆիլը, որը պարունակում է տեղեկություններ նրա անվան, տարիքի կամ ծագման երկրի մասին: Հիշեք, որ կատարողները կարող են լինել անհատներ, խմբեր կամ նվագախմբեր: Բացի այդ, մենք լրացնում ենք այս տվյալները տարվա ընթացքում արտիստների թողարկած թողարկումների քանակի մասին տեղեկություններով: Մենակատար արտիստների համար մենք նաև տեղեկատվություն ենք ավելացնում այն ​​խմբերի մասին, որոնց արտիստը մասնակցել է ամեն տարի:

SELECT
 
 
 ?artist_name ?year
 
 ?releases_in_year ?releases_up_year
 
 ?artist_type_name ?releases
 
 ?artist_gender ?artist_country_name
 
 ?artist_begin_date ?bands
 
 ?bands_in_year
 
WHERE {
 
 # Bands for each artist
 
 {
 
   SELECT
 
     ?year
 
     ?first_artist
 
     (group_concat(DISTINCT ?second_artist_name;separator=",") as ?bands)
 
     (COUNT(DISTINCT ?second_artist_name) AS ?bands_in_year)     
 
   WHERE {
 
     VALUES ?year {
 
       1960 1961 1962 1963 1964 1965 1966 1967 1968 1969
 
       1970 1971 1972 1973 1974 1975 1976 1977 1978 1979
 
       1980 1981 1982 1983 1984 1985 1986 1987 1988 1989
 
       1990 1991 1992 1993 1994 1995 1996 1997 1998 1999
 
       2000 2001 2002 2003 2004 2005 2006 2007 2008 2009
 
       2010 2011 2012 2013 2014 2015 2016 2017 2018
 
     }   
 
     ?first_artist <http://musicbrainz.foo/name> "Elton John" .
 
     ?first_artist <http://musicbrainz.foo/rdftype> <http://musicbrainz.foo/artist> .
 
     ?first_artist <http://musicbrainz.foo/type> ?first_artist_type .
 
     ?first_artist <http://musicbrainz.foo/name> ?first_artist_name .
 

 
 
     ?second_artist <http://musicbrainz.foo/rdftype> <http://musicbrainz.foo/artist> .
 
     ?second_artist <http://musicbrainz.foo/type> ?second_artist_type .
 
     ?second_artist <http://musicbrainz.foo/name> ?second_artist_name .
 
     optional { ?second_artist <http://musicbrainz.foo/begin-date-year> ?second_artist_begin_date_year . }
 
     optional { ?second_artist <http://musicbrainz.foo/end-date-year> ?second_artist_end_date_year . }
 

 
 
     ?l_artist_artist <http://musicbrainz.foo/entity0> ?first_artist .
 
     ?l_artist_artist <http://musicbrainz.foo/entity1> ?second_artist .
 
     ?l_artist_artist <http://musicbrainz.foo/link> ?link .
 

 
 
     optional { ?link <http://musicbrainz.foo/begin-date-year> ?link_begin_date_year . }
 
     optional { ?link <http://musicbrainz.foo/end-date-year> ?link_end_date_year . }
 

 
 
     FILTER (!bound(?link_begin_date_year) || ?link_begin_date_year <= ?year)
 
     FILTER (!bound(?link_end_date_year) || ?link_end_date_year >= ?year)
 
     FILTER (!bound(?second_artist_begin_date_year) || ?second_artist_begin_date_year <= ?year)
 
     FILTER (!bound(?second_artist_end_date_year) || ?second_artist_end_date_year >= ?year)
 
     FILTER (?first_artist_type NOT IN (<http://musicbrainz.foo/artist-type/2>, <http://musicbrainz.foo/artist-type/5>, <http://musicbrainz.foo/artist-type/6>))
 
     FILTER (?second_artist_type IN (<http://musicbrainz.foo/artist-type/2>, <http://musicbrainz.foo/artist-type/5>, <http://musicbrainz.foo/artist-type/6>))
 
   }
 
   GROUP BY ?first_artist ?year
 
 }
 
 # Releases up to a year
 
 {
 
   SELECT
 
     ?artist
 
     ?year
 
     (group_concat(DISTINCT ?release_name;separator=",") as ?releases)
 
     (COUNT(*) as ?releases_up_year)
 
   WHERE {
 
     VALUES ?year {
 
       1960 1961 1962 1963 1964 1965 1966 1967 1968 1969
 
       1970 1971 1972 1973 1974 1975 1976 1977 1978 1979
 
       1980 1981 1982 1983 1984 1985 1986 1987 1988 1989
 
       1990 1991 1992 1993 1994 1995 1996 1997 1998 1999
 
       2000 2001 2002 2003 2004 2005 2006 2007 2008 2009
 
       2010 2011 2012 2013 2014 2015 2016 2017 2018 
 
     }
 

 
 
     ?artist <http://musicbrainz.foo/name> "Elton John" .
 

 
 
     ?artist_credit_name <http://musicbrainz.foo/artist-credit> ?artist_credit .
 
     ?artist_credit_name <http://musicbrainz.foo/rdftype> <http://musicbrainz.foo/artist-credit-name> .
 
     ?artist_credit_name <http://musicbrainz.foo/artist> ?artist .
 
     ?artist_credit <http://musicbrainz.foo/rdftype> <http://musicbrainz.foo/artist-credit> .
 

 
 
     ?release_group <http://musicbrainz.foo/artist-credit> ?artist_credit .
 
     ?release_group <http://musicbrainz.foo/rdftype> <http://musicbrainz.foo/release-group> .
 
     ?release_group <http://musicbrainz.foo/name> ?release_group_name .
 
     ?release <http://musicbrainz.foo/release-group> ?release_group .
 
     ?release <http://musicbrainz.foo/name> ?release_name .
 
     ?release_country <http://musicbrainz.foo/release> ?release .
 
     ?release_country <http://musicbrainz.foo/date-year> ?release_country_year .
 

 
 
     FILTER (?release_country_year <= ?year)
 
   }
 
   GROUP BY ?artist ?year
 
 }
 
 # Releases in a year
 
 {
 
   SELECT ?artist ?year (COUNT(*) as ?releases_in_year)
 
   WHERE {
 
     VALUES ?year {
 
       1960 1961 1962 1963 1964 1965 1966 1967 1968 1969
 
       1970 1971 1972 1973 1974 1975 1976 1977 1978 1979
 
       1980 1981 1982 1983 1984 1985 1986 1987 1988 1989
 
       1990 1991 1992 1993 1994 1995 1996 1997 1998 1999
 
       2000 2001 2002 2003 2004 2005 2006 2007 2008 2009
 
       2010 2011 2012 2013 2014 2015 2016 2017 2018 
 
     }
 

 
 
     ?artist <http://musicbrainz.foo/name> "Elton John" .
 

 
 
     ?artist_credit_name <http://musicbrainz.foo/artist-credit> ?artist_credit .
 
     ?artist_credit_name <http://musicbrainz.foo/rdftype> <http://musicbrainz.foo/artist-credit-name> .
 
     ?artist_credit_name <http://musicbrainz.foo/artist> ?artist .
 
     ?artist_credit <http://musicbrainz.foo/rdftype> <http://musicbrainz.foo/artist-credit> .
 

 
 
     ?release_group <http://musicbrainz.foo/artist-credit> ?artist_credit .
 
     ?release_group <http://musicbrainz.foo/rdftype> <http://musicbrainz.foo/release-group> .
 
     ?release_group <http://musicbrainz.foo/name> ?release_group_name .
 
     ?release <http://musicbrainz.foo/release-group> ?release_group .
 
     ?release_country <http://musicbrainz.foo/release> ?release .
 
     ?release_country <http://musicbrainz.foo/date-year> ?release_country_year .
 

 
 
     FILTER (?release_country_year = ?year)
 
   }
 
   GROUP BY ?artist ?year
 
 }
 
 # Master data
 
 {
 
   SELECT DISTINCT ?artist ?artist_name ?artist_gender ?artist_begin_date ?artist_country_name
 
   WHERE {
 
     ?artist <http://musicbrainz.foo/name> ?artist_name .
 
     ?artist <http://musicbrainz.foo/name> "Elton John" .
 
     ?artist <http://musicbrainz.foo/gender> ?artist_gender_id .
 
     ?artist_gender_id <http://musicbrainz.foo/name> ?artist_gender .
 
     ?artist <http://musicbrainz.foo/area> ?birth_area .
 
     ?artist <http://musicbrainz.foo/begin-date-year> ?artist_begin_date.
 
     ?birth_area <http://musicbrainz.foo/name> ?artist_country_name .
 

 
 
     FILTER(datatype(?artist_begin_date) = xsd:int)
 
   }

Նման հարցման բարդության պատճառով մենք կարող էինք կետային հարցումներ կատարել միայն կոնկրետ արտիստի համար, ինչպիսին Էլթոն Ջոնն է, բայց ոչ բոլոր արտիստների համար: Թվում է, թե Նեպտունը չի օպտիմիզացնում նման հարցումը՝ զտիչներ գցելով ենթաընտրությունների մեջ: Հետևաբար, յուրաքանչյուր ընտրություն պետք է ձեռքով զտվի նկարչի անունով:

Նեպտունն ունի և՛ ժամային, և՛ մեկ մուտքի/ելքի գանձումներ: Մեր փորձարկման համար մենք օգտագործեցինք նվազագույն Նեպտունի օրինակը, որն արժե 0,384 դոլար/ժամ: Վերը նշված հարցման դեպքում, որը հաշվարկում է մեկ աշխատողի պրոֆիլը, Amazon-ը մեզանից գանձում է տասնյակ հազարավոր I/O գործողություններ՝ ենթադրելով $0.02 արժեք:

Արտադրողականություն

Նախ, Amazon Neptune-ը կատարում է իր խոստումների մեծ մասը: Որպես կառավարվող ծառայություն՝ այն գրաֆիկական տվյալների բազա է, որը չափազանց հեշտ է տեղադրել և կարող է գործարկվել և գործարկվել առանց մեծ կազմաձևման: Ահա մեր հինգ հիմնական բացահայտումները.

  • Զանգվածային վերբեռնումը հեշտ է, բայց դանդաղ: Բայց դա կարող է բարդանալ սխալի հաղորդագրություններով, որոնք այնքան էլ օգտակար չեն:
  • Հոսքային ներբեռնումն աջակցում է այն ամենին, ինչ մենք սպասում էինք և բավականին արագ էր
  • Հարցումները պարզ են, բայց բավականաչափ ինտերակտիվ չեն վերլուծական հարցումներ գործարկելու համար
  • SPARQL հարցումները պետք է օպտիմիզացվեն ձեռքով
  • Amazon-ի վճարումները դժվար է գնահատել, քանի որ դժվար է գնահատել SPARQL հարցման միջոցով սկանավորված տվյալների քանակը:

Այսքանը: Գրանցվել ինչ - որ բանի համար անվճար վեբինար «Բեռների հավասարակշռում» թեմայով.


Source: www.habr.com

Добавить комментарий