Skip to content

MongoDB init

Pavel Kučera edited this page May 19, 2016 · 11 revisions

MongoDB init

Instalace & konfigurace

Viz https://docs.mongodb.org/manual/installation/#mongodb-community-edition a postupuj podle návodu pro svůj OS, použij výchozí konfiguraci a podle instrukcí databázi spusť a zkontroluj, že běží.

Import "schématu"

Pro vytvoření kolekcí s indexy a testovacími daty použij nástroj mongorestore.

$ mongorestore --db=annotator data/annotator/

Pokud ti Mongo neběží s výchozím nastavením, viz mongorestore --help pro možnosti připojení.

Že se kolekce správně vytvořily můžeš ověřit přes (v mongo konzoli):

> use annotator
switched to db annotator

> db.getCollectionNames()
[ "activePackages", "packages", "types", "users", "votes", "words" ]

Připojení k databázi z kódu

Prakticky stačí:

import com.mongodb.client.MongoDatabase;
import com.mongodb.MongoClient;

MongoClient client = new MongoClient(); // automaticky se připojí k lokálnímu serveru

// databáze umožňuje operovat s jednotlivými záznamy
MongoDatabase database = client.getDatabase("annotator");

Podrobná dokumentace, jak poskytnout informace o databázovém serveru je na http://mongodb.github.io/mongo-java-driver/3.2/driver/reference/connecting/connection-settings/

Návrh datových struktur

S dokumentovou databází jsme nikdo zatím nepracovali, takže je možné, že se způsob ukládání dat ještě změní, pokud při vývoji narazíme na komplikace.

User

{
	"_id": "id generated by mongo",
	"email": "jon@snow.com",
	"passwordHash": "$2y$10$8r4eBknggnK0.igvduoeM.n3YRVtYsEdSasvrveOIymDFHtJBInsm"
}

Type

Typy k anotování, např. "město", "jméno", "zvíře", "věc" apod.

{
	"_id": "id generated by mongo",
	"type": "person"
}

Word

Jednotlivá slova, o kterých se rozhoduje, jestli jsou určitého typu. Šum, tedy slova, o kterých víme, jestli k danému typu patří nebo ne, se ukládají do stejné kolekce (a mají parametr belongs_to_type bool namísto null).

{
	"_id": "id generated by mongo",
	"type_id": "references a type",
	"word": "kachnička",
	"belongs_to_type": null
}

Package

Balíky slov, které můžou zpracovávat uživatelé. Balík vždy patří nějakému typu a odkazuje na slova, která obsahuje.

{
	"_id": "id generated by mongo",
	"type_id": "references a type",
	"word_count": 3,
	"words": [1, 2, 3]
}

### Vote

Záznamy o jednotlivých přiřazeních slov uživatelem.

{
	"_id": "id generated by mongo",
	"user_id": "references a user",
	"word_id": "references a word",
	"type_id": "references a type",
	"belongs_to_type": true,
	"vote_belongs_to_type": true,
	"duration": 2300
}

Active Package

Záznam o zpracovávaných balících.

{
	"_id": "id generated by mongo",
	"user_id": "references a user",
	"package_id": "references a package",
	"progress": 34
}