அமேசான் நெப்டியூனின் முதல் பதிவுகள்

வணக்கம், கப்ரோவ்ஸ்க் குடியிருப்பாளர்கள். பாடத்திட்டத்தின் தொடக்கத்தை எதிர்பார்த்து "டெவலப்பர்களுக்கான AWS" சுவாரஸ்யமான பொருளின் மொழிபெயர்ப்பை நாங்கள் தயார் செய்துள்ளோம்.

அமேசான் நெப்டியூனின் முதல் பதிவுகள்

நாம் விரும்பும் பல பயன்பாட்டு சந்தர்ப்பங்களில் பக்ததாஎங்கள் வாடிக்கையாளர்களின் இணையதளங்களில் நாம் பார்ப்பது போல, நிறுவனங்களுக்கிடையேயான இணைப்புகளில் தொடர்புடைய தகவல்கள் மறைக்கப்படுகின்றன, எடுத்துக்காட்டாக, பயனர்களுக்கு இடையிலான உறவுகள், உறுப்புகளுக்கு இடையிலான சார்புகள் அல்லது சென்சார்களுக்கு இடையிலான இணைப்புகளை பகுப்பாய்வு செய்யும் போது. இத்தகைய பயன்பாட்டு நிகழ்வுகள் பொதுவாக வரைபடத்தில் மாதிரியாக இருக்கும். இந்த ஆண்டின் தொடக்கத்தில், அமேசான் நெப்டியூன் என்ற புதிய வரைபட தரவுத்தளத்தை வெளியிட்டது. இந்த இடுகையில் எங்கள் முதல் யோசனைகள், நல்ல நடைமுறைகள் மற்றும் காலப்போக்கில் மேம்படுத்தக்கூடியவற்றைப் பகிர்ந்து கொள்ள விரும்புகிறோம்.

எங்களுக்கு அமேசான் நெப்டியூன் ஏன் தேவைப்பட்டது

வரைபட தரவுத்தளங்கள் அவற்றின் தொடர்புடைய சமமானவைகளை விட மிகவும் இணைக்கப்பட்ட தரவு தொகுப்புகளை சிறப்பாக கையாள உறுதியளிக்கின்றன. அத்தகைய தரவுத்தொகுப்புகளில், தொடர்புடைய தகவல்கள் பொதுவாக பொருள்களுக்கு இடையிலான உறவுகளில் சேமிக்கப்படும். நெப்டியூனைச் சோதிக்க அற்புதமான திறந்த தரவுத் திட்டத்தைப் பயன்படுத்தினோம் MusicBrainz. MusicBrainz, கலைஞர்கள், பாடல்கள், ஆல்பம் வெளியீடுகள் அல்லது கச்சேரிகள், பாடலின் பின்னணியில் உள்ள கலைஞர் யாருடன் இணைந்து பணியாற்றினார் அல்லது எந்த நாட்டில் ஆல்பம் வெளியிடப்பட்டது என்பது போன்ற கற்பனை செய்யக்கூடிய ஒவ்வொரு வகையான இசை மெட்டாடேட்டாவையும் சேகரிக்கிறது. MusicBrainz என்பது இசைத் துறையுடன் எப்படியோ இணைக்கப்பட்டுள்ள நிறுவனங்களின் மிகப்பெரிய வலையமைப்பாகக் காணப்படுகிறது.

MusicBrainz தரவுத்தொகுப்பு ஒரு தொடர்புடைய தரவுத்தளத்தின் CSV டம்ப்பாக வழங்கப்படுகிறது. மொத்தத்தில், 93 அட்டவணைகளில் சுமார் 157 மில்லியன் வரிசைகள் குப்பைத்தொட்டியில் உள்ளன. இந்த அட்டவணைகளில் சில கலைஞர்கள், நிகழ்வுகள், பதிவுகள், வெளியீடுகள் அல்லது தடங்கள் போன்ற அடிப்படைத் தரவைக் கொண்டிருக்கும் போது, ​​மற்றவை இணைப்பு அட்டவணைகள் — கலைஞர்கள் மற்றும் பதிவுகள், பிற கலைஞர்கள் அல்லது வெளியீடுகள் போன்றவற்றுக்கு இடையேயான உறவுகளை சேமிக்கவும்... அவை தரவுத் தொகுப்பின் வரைபட அமைப்பைக் காட்டுகின்றன. தரவுத்தொகுப்பை RDF மும்மடங்காக மாற்றும் போது, ​​தோராயமாக 500 மில்லியன் நிகழ்வுகளைப் பெற்றோம்.

நாங்கள் பணிபுரியும் திட்டக் கூட்டாளர்களின் அனுபவம் மற்றும் பதிவுகளின் அடிப்படையில், புதிய தகவலைப் பெற இந்த அறிவுத் தளம் பயன்படுத்தப்படும் அமைப்பை நாங்கள் வழங்குகிறோம். கூடுதலாக, புதிய வெளியீடுகளைச் சேர்ப்பதன் மூலம் அல்லது குழு உறுப்பினர்களைப் புதுப்பிப்பதன் மூலம் இது தொடர்ந்து புதுப்பிக்கப்படும் என்று எதிர்பார்க்கிறோம்.

சரிசெய்தல்

எதிர்பார்த்தபடி, அமேசான் நெப்டியூனை நிறுவுவது எளிது. அவள் மிகவும் விவரமானவள் ஆவணப்படுத்தப்பட்டது. நீங்கள் ஒரு சில கிளிக்குகளில் வரைபட தரவுத்தளத்தை தொடங்கலாம். இருப்பினும், விரிவான கட்டமைப்புக்கு வரும்போது, தேவையான தகவல் கண்டுபிடிக்க கடினமாக உள்ளது. எனவே, ஒரு உள்ளமைவு அளவுருவை சுட்டிக்காட்ட விரும்புகிறோம்.

அமேசான் நெப்டியூனின் முதல் பதிவுகள்
அளவுரு குழுக்களுக்கான உள்ளமைவு ஸ்கிரீன்ஷாட்

நெப்டியூன் குறைந்த தாமத பரிவர்த்தனை பணிச்சுமைகளில் கவனம் செலுத்துகிறது என்று Amazon கூறுகிறது, அதனால்தான் இயல்புநிலை கோரிக்கை நேரம் 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 மும்மடங்குகள் வெளிப்படையான தரவு வகைகளுடன் சிறுகுறிப்பு செய்யப்பட வேண்டும், இது மீண்டும் பிழைகளை ஏற்படுத்தும்.

ஸ்ட்ரீமிங் பதிவிறக்கம்

மேலே குறிப்பிட்டுள்ளபடி, நெப்டியூனை நிலையான தரவு சேமிப்பாகப் பயன்படுத்த விரும்பவில்லை, மாறாக ஒரு நெகிழ்வான மற்றும் வளரும் அறிவுத் தளமாகப் பயன்படுத்த விரும்புகிறோம். எனவே அறிவுத் தளம் மாறும்போது, ​​புதிய ஆல்பம் வெளியிடப்படும்போது அல்லது பெறப்பட்ட அறிவைப் பெற விரும்பும்போது புதிய மும்மடங்குகளை அறிமுகப்படுத்துவதற்கான வழிகளைக் கண்டறிய வேண்டும்.

நெப்டியூன் 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 வினவல்கள்

முந்தைய துணை மாதிரியை அறிமுகப்படுத்துவதன் மூலம், ஒவ்வொரு கலைஞரின் வெளியீடுகளின் எண்ணிக்கையையும் வழங்கும், நெப்டியூனைப் பயன்படுத்தி நாங்கள் பதிலளிக்க விரும்பும் முதல் வகை வினவலை ஏற்கனவே அறிமுகப்படுத்தியுள்ளோம். நெப்டியூனில் வினவலை உருவாக்குவது எளிதானது - கீழே காட்டப்பட்டுள்ளபடி, SPARQL இறுதிப்புள்ளிக்கு POST கோரிக்கையை அனுப்பவும்:

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)
 
   }

அத்தகைய வினவலின் சிக்கலான தன்மை காரணமாக, எல்டன் ஜான் போன்ற ஒரு குறிப்பிட்ட கலைஞருக்கு மட்டுமே புள்ளி வினவல்களைச் செய்ய முடியும், ஆனால் எல்லா கலைஞர்களுக்கும் அல்ல. வடிப்பான்களை துணைத் தேர்வுகளில் விடுவதன் மூலம் நெப்டியூன் அத்தகைய வினவலை மேம்படுத்துவதாகத் தெரியவில்லை. எனவே, ஒவ்வொரு தேர்வும் கலைஞர் பெயரால் கைமுறையாக வடிகட்டப்பட வேண்டும்.

நெப்டியூன் மணிநேர மற்றும் ஒவ்வொரு I/O கட்டணங்களையும் கொண்டுள்ளது. எங்கள் சோதனைக்கு, நாங்கள் குறைந்தபட்சம் நெப்டியூன் நிகழ்வைப் பயன்படுத்தினோம், இதன் விலை $0,384/மணிக்கு. மேலே உள்ள வினவல் விஷயத்தில், ஒரு தொழிலாளியின் சுயவிவரத்தைக் கணக்கிடுகிறது, அமேசான் எங்களிடம் பல்லாயிரக்கணக்கான I/O செயல்பாடுகளை வசூலிக்கிறது, இது $0.02 செலவாகும்.

முடிவுக்கு

முதலாவதாக, அமேசான் நெப்டியூன் அதன் பெரும்பாலான வாக்குறுதிகளை வைத்திருக்கிறது. நிர்வகிக்கப்பட்ட சேவையாக, இது ஒரு வரைபட தரவுத்தளமாகும், இது நிறுவ மிகவும் எளிதானது மற்றும் அதிக கட்டமைப்பு இல்லாமல் இயங்கக்கூடியது. எங்கள் ஐந்து முக்கிய கண்டுபிடிப்புகள் இங்கே:

  • மொத்தப் பதிவேற்றம் எளிதானது ஆனால் மெதுவாக உள்ளது. ஆனால் இது மிகவும் பயனுள்ளதாக இல்லாத பிழை செய்திகளால் சிக்கலாகிவிடும்.
  • ஸ்ட்ரீமிங் பதிவிறக்கம் நாங்கள் எதிர்பார்த்த அனைத்தையும் ஆதரிக்கிறது மற்றும் மிக வேகமாக இருந்தது
  • வினவல்கள் எளிமையானவை, ஆனால் பகுப்பாய்வு வினவல்களை இயக்கும் அளவுக்கு ஊடாடலாக இல்லை
  • SPARQL வினவல்கள் கைமுறையாக மேம்படுத்தப்பட வேண்டும்
  • SPARQL வினவல் மூலம் ஸ்கேன் செய்யப்பட்ட தரவின் அளவை மதிப்பிடுவது கடினம் என்பதால் Amazon கட்டணங்களை மதிப்பிடுவது கடினம்.

அவ்வளவுதான். பதிவு செய்யவும் "சுமை சமநிலை" என்ற தலைப்பில் இலவச வெபினார்.


ஆதாரம்: www.habr.com

கருத்தைச் சேர்