MongoDB (Jteam)

Post on 14-May-2015

695 views 1 download

Transcript of MongoDB (Jteam)

1

Łukasz Pełszyński

2

NOSQL

NO to SQL?

3

NOSQL

NO to SQL?

4

NOSQL

5

NOSQL

Not Only SQL→ Odpowiednie

narzędzie do danego zadania

6

NOSQL

Not Only SQL→ Odpowiednie

narzędzie do danego zadania

→ Nie tylko SQL :)

7

NOSQL

Dlaczego właśnie teraz?→ Ogromne ilości danych→ Duże wzajemne

zależności między danymi

→ Zmienna natura danych→ Dostosowanie do nowej

architektury aplikacji

8

:)

9

MongoDB

Stworzona z myślą o wydajności

Wysoce skalowalna “Document oriented” Bogaty język zapytań

10

MongoDB

Upraszcza tworzenie oprogramowania

Ale nie ma transakcji :)

11

MongoDB

MongoDB is designed to be human-oriented.

It reduces the burden of programming.

It tries to push jobs back to machines.

You can accomplish more tasks with less work, in smaller yet readable code.

12

Czas na praktykę

Stworzenie bazy:→ use jteam;

13

Czas na praktykę

Stworzenie bazy:→ use jteam;

Tworzymy dokument:→ _doc = { name: 'Lukasz', position: 'boss', age: 24 };

14

Czas na praktykę

Stworzenie bazy:→ use jteam;

Tworzymy dokument:→ _doc = { name: 'Lukasz', position: 'boss', age: 24 };

Wstawiamy do nowej kolekcji:→ db.users.save(_doc);

15

Czas na praktykę

Stworzenie bazy:→ use jteam;

Tworzymy dokument:→ _doc = { name: 'Lukasz', position: 'boss', age: 24 };

Wstawiamy do nowej kolekcji:→ db.users.save(_doc);

Znajdujemy wstawiony rekord:→ db.users.find();

16

Więcej rekordów

names = [ 'Ala', 'Ola', 'Ela', 'Zenek', 'Zdzisław', 'U1', 'U2', 'U3', 'U4', 'U6' ];for (index in names) {

db.users.save({ name: names[index], age: 20 + parseInt(index), gender: 'unknown'});

};

17

Zapytania

Zapytania są dynamiczne:→ var cursor = db.users.find();→ cursor.hasNext();→ cursor.next();→ db.users.find().forEach(

function(x) { print(tojson(x)); }

);

18

Zapytania c.d.

Proste wyszukiwanie:→ db.users.find({age: 24});→ db.users.find({age: 24}).limit(1);→ db.users.find({age: 24}).sort({age: -1, name: -1});→ db.users.findOne({name:'Zenek'});

19

Zapytania c.d.

Proste wyszukiwanie:→ db.users.find({age: 24});→ db.users.find({age: 24}).limit(1);→ db.users.find({age: 24}).sort({age: -1, name: -1});→ db.users.findOne({name:'Zenek'});

Operator $in:→ db.users.find({name: {'$in': ['Lukasz', 'Ala']} });

20

Zapytania c.d.

Proste wyszukiwanie:→ db.users.find({age: 24});→ db.users.find({age: 24}).limit(1);→ db.users.find({age: 24}).sort({age: -1, name: -1});→ db.users.findOne({name:'Zenek'});

Operator $in:→ db.users.find({name: {'$in': ['Lukasz', 'Ala']} });

Where (używać jak najrzadziej)→ db.users.find( { $where: "this.age > 3" };

21

Zapytania c.d.

>→ db.users.find({ 'age' : { $gt: 24 } } );

<=→ db.users.find({ 'age' : { $lte: 24 } } );

22

Zaawansowane zapytania

_rec = { name: 'Lukasz', grad_years: [2005, 2010], conferences: { 2010: 'geecon', 2009: 'rupy', unknown: 'wtf' } };

db.users.save(_rec);

23

Zaawansowane zapytania c.d.

Hmm...→ db.users.find({'conferences.2010'

: 'geecon' }) ;

24

Zaawansowane zapytania c.d.

?!→ db.users.find({'conferences.2010'

: 'geecon' }) ; → db.users.find({'grad_years.0':

2005 }) ;

25

Zaawansowane zapytania c.d.

WTF?!→ db.users.find({'conferences.2010'

: 'geecon' }) ; → db.users.find({'grad_years.0':

2005 }) ;

→ db.users.find({"conferences.2010": "geecon", grad_years: 2005 }) ;

26

MongoDB + Java

Doskonałe wsparcie dla wszystkich popularnych języków→ http://www.mongodb.o

rg/display/DOCS/Drivers

27

W akcji

28

Pytania?