Download pdf - MongoDB (Jteam)

Transcript
Page 1: MongoDB (Jteam)

1

Łukasz Pełszyński

Page 2: MongoDB (Jteam)

2

NOSQL

NO to SQL?

Page 3: MongoDB (Jteam)

3

NOSQL

NO to SQL?

Page 4: MongoDB (Jteam)

4

NOSQL

Page 5: MongoDB (Jteam)

5

NOSQL

Not Only SQL→ Odpowiednie

narzędzie do danego zadania

Page 6: MongoDB (Jteam)

6

NOSQL

Not Only SQL→ Odpowiednie

narzędzie do danego zadania

→ Nie tylko SQL :)

Page 7: MongoDB (Jteam)

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

Page 8: MongoDB (Jteam)

8

:)

Page 9: MongoDB (Jteam)

9

MongoDB

Stworzona z myślą o wydajności

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

Page 10: MongoDB (Jteam)

10

MongoDB

Upraszcza tworzenie oprogramowania

Ale nie ma transakcji :)

Page 11: MongoDB (Jteam)

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.

Page 12: MongoDB (Jteam)

12

Czas na praktykę

Stworzenie bazy:→ use jteam;

Page 13: MongoDB (Jteam)

13

Czas na praktykę

Stworzenie bazy:→ use jteam;

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

Page 14: MongoDB (Jteam)

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

Page 15: MongoDB (Jteam)

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();

Page 16: MongoDB (Jteam)

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

};

Page 17: MongoDB (Jteam)

17

Zapytania

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

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

);

Page 18: MongoDB (Jteam)

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

Page 19: MongoDB (Jteam)

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']} });

Page 20: MongoDB (Jteam)

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" };

Page 21: MongoDB (Jteam)

21

Zapytania c.d.

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

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

Page 22: MongoDB (Jteam)

22

Zaawansowane zapytania

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

db.users.save(_rec);

Page 23: MongoDB (Jteam)

23

Zaawansowane zapytania c.d.

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

: 'geecon' }) ;

Page 24: MongoDB (Jteam)

24

Zaawansowane zapytania c.d.

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

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

2005 }) ;

Page 25: MongoDB (Jteam)

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

Page 26: MongoDB (Jteam)

26

MongoDB + Java

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

rg/display/DOCS/Drivers

Page 27: MongoDB (Jteam)

27

W akcji

Page 28: MongoDB (Jteam)

28

Pytania?