Facebook
From xd, 3 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 48
  1. // 1 KOLOS
  2.  
  3.  
  4. W załączonym pliku „kolokwium.zip”, w pliku „dane.json” znajduje się definicja bazy dokumentowej MongoDB opisującej następujące dane na temat „osób”:
  5. - unikatowy identyfikator (dodatnia liczba całkowita)
  6. - imię i nazwisko (ciąg znaków)
  7. - ojciec, matka (dodatnie liczby całkowite)
  8. Zaimportuj dane do MongoDB za pomocą skryptu „imp_do_mongo.js” (skrypt zakłada, że serwer działa na loclahost), sprawdź, że import się powiódł, a następnie wykonaj poniższe polecenia.
  9.  
  10.  
  11. Stwórz skrypt „rozwiazanie/bazaNeo4j.js”, wykorzystujący Node.js, który zdefiniuje bazę grafową w Neo4j posiadającą następującą strukturę:
  12.  
  13. węzły: Person(imię i nazwisko)
  14. krawędzie: matka, ojciec
  15.  
  16.  
  17.  
  18. Stwórz skrypt „rozwiazanie/import.js” wykorzystujący Node.js importujący dane z bazy MongoDB do utworzonej bazy Neo4j
  19.  
  20.  
  21. Używając Node.js zaprojektuj i stwórz w pliku o nazwie „rozwiazanie/serwer.js” serwer realizujący API REST-owe (wykorzystujące format JSON do przekazywania danych – w obie strony) odpowiadające na pytania
  22.  
  23. przodkowie n-tego rzędu (rodzice, dziadkowie, pradziadkowie, ...)
  24. kuzyni (dzieci brata lub siostry matki lub ojca)
  25. osoby, których ojciec ma rodzeństwo, a matka jest jedynakiem
  26. zbiory osób, będących rodzeństwem, które mają maksymalną liczebność
  27.  
  28.  
  29.  
  30. W pliku „rozwiazanie/api.md” stwórz prostą dokumentację powyższego API opisującą dla każdego „endpointu” API następujące elementy
  31.  
  32. ścieżka
  33. typy i znaczenie argumentów
  34. obiekt zwracany
  35.  
  36.  
  37.  
  38. Rozwiązanie (czyli zawartość podkatalogu „rozwiązanie”) umieść na GitLabie, w podkatalogu o nazwie „kolokwium” (oczywiście pomiń podkatalog node_modules). W szczególności muszą się tam znaleźć pliki, które stanowią rozwiązanie kolokwium:
  39. - „bazaNeo4j.js”
  40. - „import.js”
  41. - „serwer.js” (serwer obsługujący API opisane w punkcie 3)
  42. - „api.md” (plik Markdown z krótką „dokumentacją” API)
  43. Upewnij się, że kompletne rozwiązanie faktycznie trafiło do Twojego repozytorium związanego z naszym przedmiotem na GitLabie!
  44.  
  45. // 2 KOLOS
  46.  
  47. Zadanie 1. (Neo4j)
  48.  
  49. Stwórz zapytanie, które wyławia drużyny klubowe w których gra co najmniej 7 reprezentantów kraju,
  50. z którego dana drużyna pochodzi. Zapytanie powinno zwrócić nazwę klubu, poszukiwaną listę zawodników,
  51. jej długość oraz nazwę kraju, który reprezentują.
  52.  
  53. Zadanie 2. (Neo4j)
  54.  
  55. Stwórz zapytanie zwracające dane na temat klubów, w których gra maksymalnie wielu reprezentantów
  56. kraju, z którego NIE pochodzi sam klub. Wynik powinien zawierać: nazwę klubu, listę (bez powtórzeń)
  57. reprezentantów oraz kraj, który reprezentują.
  58.  
  59. Zadanie 3. (Neo4j)
  60.  
  61. Stwórz zapytanie zwracające wszystkie kraje, których zawodnicy nie grają w klubach, w których występują
  62. reprezentanci kraju Y (parametr).
  63.  
  64. Zadanie 4. (MongoDB)
  65.  
  66. 1. W oparciu o podane niżej „sugestie” zdefiniuj bazę MongoDB i używając Node.js zaimportuj do niej dane
  67. z bazy Neo4j. Skrypt importujący dane, który musisz uzupełnić, to „importDanych.js”. Poniżej fragment
  68. definicji bazy MongoDB (z użyciem Mongoose) – zauważ, że „modele” (Country oraz Club) zostały użyte, ale
  69. nie zostały w nim zdefiniowane – musisz to uzupełnić. Zwróć uwagę na fakt, że informacje na temat kraju
  70. (odnośnie zarówno reprezentacji jak i klubu) zostały wyodrębnione (inaczej niż w przypadku bazy Neo4j).
  71.  
  72. countrySchema = new mongoose.Schema({
  73.     name: {
  74.         type: String,
  75.         required: true
  76.     }
  77. });
  78.  
  79. clubSchema = new mongoose.Schema({
  80.     name: {
  81.         type: String,
  82.         required: true
  83.     },
  84.     country: {
  85.         type: mongoose.Schema.Types.ObjectId,
  86.         ref: 'Country',
  87.         required: true
  88.     }
  89. });
  90.  
  91. playerSchema = new mongoose.Schema({
  92.     name: {
  93.         type: String,
  94.         required: true
  95.     },
  96.     playsFor: {
  97.         type: mongoose.Schema.Types.ObjectId,
  98.         ref: 'Club',
  99.         required: true
  100.     },
  101.     represents: {
  102.         type: mongoose.Schema.Types.ObjectId,
  103.         ref: 'Country'
  104.     }
  105. });
  106.  
  107. 2. Używając języka zapytań MongoDB stwórz zapytanie, które zwraca listę reprezentacji narodowych, które da
  108. się zbudować z zawodników grających w minimalnej liczbie zagranicznych drużyn klubowych.
  109.  
  110. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  111. % UWAGA!
  112. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  113.  
  114. Przed zakończeniem kolokwium należ spakować (ZIP) i przesłać do odpowiedniego prowadzącego pliki:
  115.  
  116.   - zad_01.cypher
  117.   - zad_02.cypher
  118.   - zad_03.cypher
  119.   - importDanych.js
  120.   - zad_04.js
  121.   - package*.json
  122.  
  123. Plik ZIP powinien mieć nazwę: <nazwisko-imię>.zip, gdzie zamiast „nazwisko” („imię”) wstawisz
  124. SWOJE nazwisko i imię (bez polskich znaków).