Specyfikacja funkcjonalna
System do migracji danych dotyczących sieci społecznych z heterogenicznych źródeł do grafowej bazy danych
Autorzy: Gabriel Kępka, Piotr Makarewicz
Migracja danych
Aplikacja konsolowa do migracji z bazy PostgreSQL
Kryteria akceptacji:
część projektu realizująca migrację z bazy PostgreSQL będzie uruchamiana z linii poleceń
jako parametry uruchomienia aplikacja przyjmie ścieżkę do pliku konfiguracyjnego z parametrami połączeń do baz danych oraz ścieżkę do pliku konfiguracyjnego ze zdefiniowanym sposobem mapowania
Przykład:
java Migrator db.properties mapping.json
Aplikacja konsolowa do migracji z pojedynczego pliku CSV/XML
Kryteria akceptacji:
część projektu realizująca migrację z pojedynczego pliku CSV/XML będzie uruchamiana z linii poleceń
jako parametry uruchomienia aplikacja przyjmie ścieżkę do pliku konfiguracyjnego z parametrami połączeń do baz danych oraz ścieżkę do pliku z danymi
Przykład:
java Migrator db.properties data.csv
Plik konfiguracyjny z parametrami połączeń do baz PostgreSQL i Neo4j
Kryteria akceptacji:
ustalono jednolity format pliku konfiguracyjnego dla połączeń z bazami PostgreSQL i Neo4j
użytkownik ma możliwość podłączenia się do obu baz, podając jedynie nazwę pliku konfiguracyjnego
Plik konfiguracyjny będzie w formacie Java Properties z kluczami:
postgresHost- adres serwera PostgreSQLpostgresDB- nazwa użytkownika PostgreSQLpostgresUser- hasło do bazy PostgreSQLpostgresPassword- nazwa bazy PostgreSQLneo4jHost- adres bazy Neo4jneo4jUser- nazwa użytkownika Neo4jneo4jPassword- hasło do bazy Neo4j
Przykład:
postgresHost=localhost
postgresDB=socialdata
postgresUser=sna_user
postgresPassword=password
neo4jHost=localhost
neo4jUser=neo4j
neo4jPassword=password
Plik konfiguracyjny z mapowaniem między schematem bazy relacyjnej a schematem docelowym
Kryteria akceptacji:
ustalono jednolity format pliku konfiguracyjnego dla mapowania, gdy zbiorem źródłowym jest baza relacyjna SQL
Mapowania będą definiowane w pliku o formacie JSON:
{
"nodes": [
<node_mapping>,...
],
"edges": [
<foreign_key_edge_mapping>|<join_table_edge_mapping>,...
]
}
<node_mapping> jest obiektem JSON reprezentującym mapowanie rekordów tabeli SQL na węzły w bazie Neo4j. Pola obiektu JSON:
sqlTableName- nazwa tabeli w bazie SQL
nodeLabel- etykieta węzła w bazie Neo4j
mappedColumns- obiekt JSON, w którym klucze to nazwy kolumn tabelisqlTableName, a wartości to nazwy odpowiadających im atrybutów węzła
<foreign_key_edge_mapping> jest obiektem JSON reprezentującym mapowanie powiązania kluczem obcym SQL na krawędź w bazie Neo4j. Pola obiektu JSON:
edgeLabel- etykieta krawędzi w bazie Neo4j
foreignKey- łańcuch znaków w formacietable.columnoznaczający tabelę i kolumnę klucza obcego w bazie SQL
from- nazwa tabeli odpowiadającej węzłowi, z którego ma być poprowadzona krawędź
to- nazwa tabeli odpowiadającej węzłowi, do którego ma być poprowadzona krawędź
<join_table_edge_mapping> jest obiektem JSON reprezentującym mapowanie powiązania tabelą łącznikową SQL na krawędź w bazie Neo4j. Pola obiektu JSON:
edgeLabel- etykieta krawędzi w bazie Neo4j
joinTable- nazwa tabeli łącznikowej
from- nazwa tabeli odpowiadającej węzłowi, z którego ma być poprowadzona krawędź
to- nazwa tabeli odpowiadającej węzłowi, do którego ma być poprowadzona krawędź
mappedColumns- obiekt JSON, w którym klucze to nazwy kolumn tabelijoinTable, a wartości to nazwy odpowiadających im atrybutów krawędzi
Przykład (dla bazy Salon24):
{
"nodes": [
{
"sqlTableName": "authors",
"nodeLabel": "Person",
"mappedColumns": {
"id": "id",
"bloglink": "blog_url",
"name": "name"
}
},
{
"sqlTableName": "posts",
"nodeLabel": "Post",
"mappedColumns": {
"id": "id",
"categoryno": "categoryno",
"content": "content",
"date": "timestamp",
"link": "url",
"title": "title"
}
},
{
"sqlTableName": "comments",
"nodeLabel": "Comment",
"mappedColumns": {
"id": "id",
"content": "content",
"date": "timestamp",
"salon_id": "salon_id",
"title": "title"
}
},
{
"sqlTableName": "tags",
"nodeLabel": "Tag",
"mappedColumns": {
"name": "tag_name",
"id": "id"
}
}
],
"edges": [
{
"edgeLabel": "IsAuthorOf",
"foreignKey": "posts.author_id",
"from": "authors",
"to": "posts"
},
{
"edgeLabel": "IsTaggedWith",
"joinTable": "posts_tags",
"from": "posts",
"to": "tags",
"mappedColumns": {}
}
]
}
Interaktywne przejście przez tworzenie mapowania między schematem bazy relacyjnej a docelowym
Kryteria akceptacji:
użytkownik może zdefiniować te same mapowania, co za pomocą plików konfiguracyjnych, przez interakcję z aplikacją konsolową
aplikacja umożliwia użytkownikowi ustalenie, że określone tabele lub kolumny nie będą importowane
- aplikacja podpowiada użytkownikowi i umożliwia wybór dostępnego:
schematu docelowej bazy grafowej
typu wierzchołka dla danej tabeli
atrybutu wierzchołka dla kolumny tabeli
typu krawędzi dla klucza obcego
typu krawędzi dla tabeli łącznikowej
atrybutu krawędzi dla kolumny tabeli łącznikowej
Plik konfiguracyjny z mapowaniem między listą krawędzi w pliku XML a schematem docelowym
Kryteria akceptacji:
ustalono jednolity format pliku konfiguracyjnego dla mapowania, gdy zbiorem źródłowym jest plik XML z grafem w postaci listy krawędzi
użytkownik może wybrać w pliku jeden z dostępnych schematów bazy grafowej
- użytkownik może ustalić w pliku mapowanie między tagiem XML a:
typem wierzchołka
atrybutem wierzchołka
typem krawędzi
atrybutem krawędzi
użytkownik może ustalić w pliku, że określone tagi XML nie będą importowane lub są tagami zewnętrznymi dla właściwych danych
Interaktywne przejście przez tworzenie mapowania między listą krawędzi w pliku XML a schematem docelowym
Kryteria akceptacji:
użytkownik może zdefiniować te same mapowania, co za pomocą plików konfiguracyjnych, przez interakcję z aplikacją konsolową
aplikacja umożliwia użytkownikowi ustalenie, że określone tagi XML nie będą importowane lub są tagami zewnętrznymi dla właściwych danych
- aplikacja podpowiada użytkownikowi i umożliwia wybór dostępnego:
schematu docelowej bazy grafowej
typu wierzchołka dla odpowiedniego tagu XML
typu krawędzi dla odpowiedniego tagu XML
typu atrybutu krawędzi dla odpowiedniego tagu XML wewnątrz tagu odpowiadającego krawędzi
typu atrybutu wierzchołka dla odpowiedniego tagu XML wewnątrz tagu odpowiadającego wierzchołkowi
Plik konfiguracyjny z mapowaniem między listą krawędzi w pliku CSV a schematem docelowym
Kryteria akceptacji:
ustalono jednolity format pliku konfiguracyjnego dla mapowania, gdy zbiorem źródłowym jest plik CSV z grafem w postaci listy krawędzi
użytkownik może wybrać w pliku jeden z dostępnych schematów bazy grafowej
aplikacja pozwala na wczytywanie zarówno plików CSV z etykietami kolumn, jak i bez
- użytkownik może ustalić w pliku mapowanie między kolumną a:
typem wierzchołka
atrybutem wierzchołka
atrybutem krawędzi
użytkownik może ustalić w pliku, że określone kolumny nie będą importowane
Interaktywne przejście przez tworzenie mapowania między listą krawędzi w pliku CSV a schematem docelowym
Kryteria akceptacji:
użytkownik może zdefiniować te same mapowania, co za pomocą plików konfiguracyjnych, przez interakcję z aplikacją konsolową
aplikacja umożliwia użytkownikowi ustalenie, że określone kolumny nie będą importowane
- aplikacja podpowiada użytkownikowi i umożliwia wybór dostępnego:
schematu docelowej bazy grafowej
typu wierzchołka dla odpowiedniej kolumny
typu atrybutu krawędzi dla odpowiedniej kolumny
typu atrybutu wierzchołka dla odpowiedniej kolumny
Zawężenie przedziału czasowego przy imporcie danych
Kryteria akceptacji:
aplikacja umożliwia użytkownikowi filtrowanie importowanych danych po jednym lub więcej atrybutach reprezentujących datę i czas
aplikacja umożliwia użytkownikowi ustalenie przedziału czasowego dla importowanych danych
Rozszerzenie istniejącego grafu
Kryteria akceptacji:
aplikacja pozwala na import nowych danych do już istniejącego grafu
Miary podobieństwa węzłów
Kryteria akceptacji:
aplikacja rozpoznaje, gdy dane importowane pochodzą z tego samego źródła, co dane w bazie grafowej. Wtedy aplikacja wyznacza miarę podobieństwa między odpowiednimi węzłami
miara podobieństwa węzłów jest wyznaczana na podstawie wybranych przez użytkownika atrybutów węzłów
Scalanie grafu wejściowego i docelowego
Kryteria akceptacji:
- gdy dane importowane pochodzą z tego samego źródła, co dane w bazie grafowej:
aplikacja pozwala użytkownikowi zdecydować, powyżej jakiej wartości miary podobieństwa scalić odpowiednie węzły, a poniżej której uznawać je za osobne
w przypadku konfliktu wartości między atrybutami scalanych węzłów aplikacja pozwala użytkownikowi wybrać czy woli zachować wartości źródłowe czy docelowe
Analiza sieci
Zawężenie przedziału czasowego przy analizie sieci
Kryteria akceptacji:
aplikacja umożliwia użytkownikowi filtrowanie danych wejściowych do danego algorytmu SNA po jednym lub więcej atrybutach reprezentujących datę i czas
aplikacja umożliwia użytkownikowi ustalenie przedziału czasowego dla danych wejściowych do danego algorytmu SNA
Wybór i wykonanie algorytmu analizy sieci
Kryteria akceptacji:
aplikacja umożliwia użytkownikowi wybór jednego z dostępnych algorytmów analizy sieci
aplikacja wykonuje algorytm SNA i zapisuje wyniki w tej samej bazie, co dane wejściowe lub w nowej bazie, w zależności od tego, co ustali użytkownik
Dostępne algorytmy SNA
Kryteria akceptacji:
- aplikacja pozwala na uruchomienie następujących algorytmów / obliczenie następujących parametrów:
Density
Clustering coefficient
Degree centrality
Closeness centrality
Betweenness centrality
PageRank
Degree distribution
Eksport do formatu JSON lub CSV
Kryteria akceptacji:
użytkownik ma możliwość eksportu grafu z wynikami analiz do pliku w formacie JSON lub CSV