SlideShare ist ein Scribd-Unternehmen logo
1 von 28
Downloaden Sie, um offline zu lesen
Play with mongodb

         By: Wladislaw Merezhko
Mongodb is

●   NoSQL
●   Простота та потужність
●   Документ орієнтована (json/bson)
●   Вбудовані документи та масиви
●   Динамічна схема
●   Простота масштабування
●   Повна підтримка індексації
Філософія Mongodb
●   Простота розробки
●   Горизонтальне масштабування
●   Документна модель (JSON)
●   Працювати будь-де
●   Чотири основні риси
       - гнучкість
       - потужність
       - швидкодія
       - простота у використанні
Документи vs Таблиць
●   Документи зберігаються у колекціях
●   Колекції входять до складу баз даних
●   Колекції подібні до таблиць
●   Документи до записів у таблиці
●   Документи можуть мати різні поля
Звичайна таблиця
CREATE TABLE customer (First_Name
char(50), Last_Name char(50),
Date_of_Birth date);
INSERT INTO customer (First_Name,
Last_Name, Date_of_Birth) VALUES
('Jean', 'Dumont', '1963-01-22'),
('Franck', 'Pellerin', '1983-09-19'),
('Dustin', 'Gannon', '1982-11-12');
Звичайна колекція
{ "_id":
ObjectId("4efa8d2b7d284dad101e4bc9"),
    "Last Name": "DUMONT",
    "First Name": "Jean",
    "Date of Birth": "01-22-1963"},
{ "_id":
ObjectId("4efa8d2b7d284dad101e4bc7"),
    "Last Name": "PELLERIN",
    "First Name": "Franck",
    "Date of Birth": "09-19-1983",
    "Address": "1 chemin des Loges",
    "City": "VERSAILLES"}
Звичайна колекція
{
"_id":ObjectId("4efa8d2b7d284dad101e4bc7"),
    "Last Name": "PELLERIN",
    "First Name": "Franck",
    "Date of Birth": "09-19-1983",
    "Address": {
        "Street": "1 chemin des Loges",
        "City": "VERSAILLES"
    }
}
Запити
●   Створити новий документу у новій колекції
    > db.users.insert({
        _id : "alex",
        name: {
           first:"Alex",
           last:"Benisson" },
        karma : 1.0
    });
Запити
> j = {name: "mongo"}; {"name":"mongo"}
> t = { x : 3 }; { "x" : 3 }
> db.things.save(j);
> db.things.save(t);
> db.things.find();
{ "_id" :
ObjectId("4c2209f9f3924d31102bd84a"),
"name" : "mongo" }
{ "_id" :
ObjectId("4c2209fef3924d31102bd84b"),
"x" : 3 }
Запити
SELECT j FROM things WHERE x=4
>db.things.find({x:4},{j:true});
{ "_id" :
ObjectId("4c220a42f3924d31102bd856"),
"j" : 1 }
{ "_id" :
ObjectId("4c220a42f3924d31102bd857"),
"j" : 2 } ...
Запити
●   Атомарна операція зміни
    > db.posts.update(
       {_
           id:ObjectId("4e77b3b8a3...a"),
           voters: { $nin: "calvin" }
       },
       {
           votes: { $inc: 1 },
           voters: { $push: "calvin" }
       }
    );
Реплікації та шардинг
●   Два види реплікацій
Реплікації та шардинг
●   Надійне сховище
Типове застосування
●   Найкраще підходить для

●   Зтиснення та зберігання логів
●   CMS системи
●   Електрона комерція
●   Ігри
●   Мобільні платформи
●   Аналітика та статус у реальному часі
Типове застосування
●   Погано підходить для

●   Великих та складних транзакційних систем
●   Проблем вимагаючих реляційних зв’язків
●   Проблем потребуючих SQL
Проекти що використовуют
●   Craigslist
●   MTV Networks’ next-generation CMS
●   Intuit
●   bit.ly
●   Wordnik
●   Harmony
Play (1.2.3) is
●   Чиста альтернатива роздутому джава
    інтерпрайз стеку
●   Фокусується на продуктивній розробці
●   Ідеально підходить для аджайл
●   Дозволяє використовувати інструменти
    розробки та бібліотеки
●   http://www.playframework.org
Структура проекту
app
 - controllers
 - modules
 - views
conf
data.yml
lib
modules
public
test
PlayMorphia is
●   Інструмент інтеграції монго у плей
●   Швидкодія і простота
●   POJO
●   Вбудовані обєкти та посилання
●   GridFS
●   Атомарні операції
Приклад
●   $eq                    ●   $size
●   $ne                    ●   $type
●   $gt, $lt, $gte, $lte   ●   $elemMatch
●   $in                    ●   $exists
●   $nin                   ●   $all
Приклад
    List<User> users = User.q().filter(
       "department eq", "IT"
    ).asList();

●   is exactly the same as
    List<User> users = User.q().filter(
       "department", "IT"
    ).asList();
Приклад
@Entity public class MTB extends Model {
    public String email;
    public String password;
    public String fullname;
    public boolean isAdmin;
    public MTB(String email, String
password, String fullname){
        this.email = email;
        this.password = password;
        this.fullname = fullname;
    }
}
Приклад
// define the embedded class
@Embedded public class Address {
    public String streetNo;
    public String state;
    …
}
// define the embedding class
@Entity public class Customer extends
Model {
    @Embedded
    public Address address;
}
Приклад
●   Отримати всі
    List<MTB> mtbs = MTB.find().asList();
●   Створити новий
    MTB mtb = new MTB("jdow@email.com",
    "John", "Doe");
    mtb.save();
Приклад
List<User> johns =
User.q().filter("firstName",
   Pattern.compile("john",
   Pattern.CASE_INSENSITIVE)
).asList();
Приклад
List<User> users = Users.find(
   "address.street, address.city,
   address.country",
   "FuXingJie", "DuJiangYan", "China"
).asList();
Запитання?
Дякую за увагу

Weitere ähnliche Inhalte

Ähnlich wie Play Mongodb

Основи алгоритмізації та програмування. Лекція 1
Основи алгоритмізації та програмування. Лекція 1Основи алгоритмізації та програмування. Лекція 1
Основи алгоритмізації та програмування. Лекція 1Dmitry Chabanenko
 
JS Fest 2019/Autumn. Роман Савіцький. Webcomponents & lit-element in production
JS Fest 2019/Autumn. Роман Савіцький. Webcomponents & lit-element in productionJS Fest 2019/Autumn. Роман Савіцький. Webcomponents & lit-element in production
JS Fest 2019/Autumn. Роман Савіцький. Webcomponents & lit-element in productionJSFestUA
 
Роман Савіцький, "Webcomponents & lit-element in production."
Роман Савіцький, "Webcomponents & lit-element in production."Роман Савіцький, "Webcomponents & lit-element in production."
Роман Савіцький, "Webcomponents & lit-element in production."Sigma Software
 
iPhone Objective-C Development (ukr) (2009)
iPhone Objective-C Development (ukr) (2009)iPhone Objective-C Development (ukr) (2009)
iPhone Objective-C Development (ukr) (2009)Anatoliy Okhotnikov
 
[Knowledge Sharing] - Behavioral patterns by Pavlo Serdyuk (UKR)
[Knowledge Sharing] - Behavioral patterns by Pavlo Serdyuk (UKR)[Knowledge Sharing] - Behavioral patterns by Pavlo Serdyuk (UKR)
[Knowledge Sharing] - Behavioral patterns by Pavlo Serdyuk (UKR)Exoft LLC
 
Lec10 11 ado-net
Lec10 11 ado-netLec10 11 ado-net
Lec10 11 ado-netcit-cit
 
02 Copying Objects
02 Copying Objects02 Copying Objects
02 Copying Objectsolegapster
 
змінна введення виведення даних
змінна введення виведення данихзмінна введення виведення даних
змінна введення виведення данихМикола Мізюк
 
Lecture 06. iOS Programming. Основи Objective-C
Lecture 06. iOS Programming. Основи Objective-CLecture 06. iOS Programming. Основи Objective-C
Lecture 06. iOS Programming. Основи Objective-CMaksym Davydov
 
Тема 12 - Ініціатива відкритих форматів. XML та метадані.
Тема 12 - Ініціатива відкритих форматів. XML та метадані.Тема 12 - Ініціатива відкритих форматів. XML та метадані.
Тема 12 - Ініціатива відкритих форматів. XML та метадані.Oleg Nazarevych
 
IT Talks The c++'s simplest smart pointers in depth
IT Talks The c++'s simplest smart pointers in depthIT Talks The c++'s simplest smart pointers in depth
IT Talks The c++'s simplest smart pointers in depthVadym Muliavka
 

Ähnlich wie Play Mongodb (20)

Sql db
Sql dbSql db
Sql db
 
Основи алгоритмізації та програмування. Лекція 1
Основи алгоритмізації та програмування. Лекція 1Основи алгоритмізації та програмування. Лекція 1
Основи алгоритмізації та програмування. Лекція 1
 
JS Fest 2019/Autumn. Роман Савіцький. Webcomponents & lit-element in production
JS Fest 2019/Autumn. Роман Савіцький. Webcomponents & lit-element in productionJS Fest 2019/Autumn. Роман Савіцький. Webcomponents & lit-element in production
JS Fest 2019/Autumn. Роман Савіцький. Webcomponents & lit-element in production
 
Роман Савіцький, "Webcomponents & lit-element in production."
Роман Савіцький, "Webcomponents & lit-element in production."Роман Савіцький, "Webcomponents & lit-element in production."
Роман Савіцький, "Webcomponents & lit-element in production."
 
Lecture 07 swift
Lecture 07 swiftLecture 07 swift
Lecture 07 swift
 
Theme21_json
Theme21_jsonTheme21_json
Theme21_json
 
iPhone Objective-C Development (ukr) (2009)
iPhone Objective-C Development (ukr) (2009)iPhone Objective-C Development (ukr) (2009)
iPhone Objective-C Development (ukr) (2009)
 
08 Functions
08 Functions08 Functions
08 Functions
 
[Knowledge Sharing] - Behavioral patterns by Pavlo Serdyuk (UKR)
[Knowledge Sharing] - Behavioral patterns by Pavlo Serdyuk (UKR)[Knowledge Sharing] - Behavioral patterns by Pavlo Serdyuk (UKR)
[Knowledge Sharing] - Behavioral patterns by Pavlo Serdyuk (UKR)
 
tsql
tsqltsql
tsql
 
Lec10 11 ado-net
Lec10 11 ado-netLec10 11 ado-net
Lec10 11 ado-net
 
02 Copying Objects
02 Copying Objects02 Copying Objects
02 Copying Objects
 
змінна введення виведення даних
змінна введення виведення данихзмінна введення виведення даних
змінна введення виведення даних
 
Funkciji1
Funkciji1Funkciji1
Funkciji1
 
Lecture 06. iOS Programming. Основи Objective-C
Lecture 06. iOS Programming. Основи Objective-CLecture 06. iOS Programming. Основи Objective-C
Lecture 06. iOS Programming. Основи Objective-C
 
Модулі Python
Модулі PythonМодулі Python
Модулі Python
 
Less37
Less37Less37
Less37
 
Design patterns part 1
Design patterns part 1Design patterns part 1
Design patterns part 1
 
Тема 12 - Ініціатива відкритих форматів. XML та метадані.
Тема 12 - Ініціатива відкритих форматів. XML та метадані.Тема 12 - Ініціатива відкритих форматів. XML та метадані.
Тема 12 - Ініціатива відкритих форматів. XML та метадані.
 
IT Talks The c++'s simplest smart pointers in depth
IT Talks The c++'s simplest smart pointers in depthIT Talks The c++'s simplest smart pointers in depth
IT Talks The c++'s simplest smart pointers in depth
 

Play Mongodb

  • 1. Play with mongodb By: Wladislaw Merezhko
  • 2. Mongodb is ● NoSQL ● Простота та потужність ● Документ орієнтована (json/bson) ● Вбудовані документи та масиви ● Динамічна схема ● Простота масштабування ● Повна підтримка індексації
  • 3. Філософія Mongodb ● Простота розробки ● Горизонтальне масштабування ● Документна модель (JSON) ● Працювати будь-де ● Чотири основні риси - гнучкість - потужність - швидкодія - простота у використанні
  • 4. Документи vs Таблиць ● Документи зберігаються у колекціях ● Колекції входять до складу баз даних ● Колекції подібні до таблиць ● Документи до записів у таблиці ● Документи можуть мати різні поля
  • 5. Звичайна таблиця CREATE TABLE customer (First_Name char(50), Last_Name char(50), Date_of_Birth date); INSERT INTO customer (First_Name, Last_Name, Date_of_Birth) VALUES ('Jean', 'Dumont', '1963-01-22'), ('Franck', 'Pellerin', '1983-09-19'), ('Dustin', 'Gannon', '1982-11-12');
  • 6. Звичайна колекція { "_id": ObjectId("4efa8d2b7d284dad101e4bc9"), "Last Name": "DUMONT", "First Name": "Jean", "Date of Birth": "01-22-1963"}, { "_id": ObjectId("4efa8d2b7d284dad101e4bc7"), "Last Name": "PELLERIN", "First Name": "Franck", "Date of Birth": "09-19-1983", "Address": "1 chemin des Loges", "City": "VERSAILLES"}
  • 7. Звичайна колекція { "_id":ObjectId("4efa8d2b7d284dad101e4bc7"), "Last Name": "PELLERIN", "First Name": "Franck", "Date of Birth": "09-19-1983", "Address": { "Street": "1 chemin des Loges", "City": "VERSAILLES" } }
  • 8. Запити ● Створити новий документу у новій колекції > db.users.insert({ _id : "alex", name: { first:"Alex", last:"Benisson" }, karma : 1.0 });
  • 9. Запити > j = {name: "mongo"}; {"name":"mongo"} > t = { x : 3 }; { "x" : 3 } > db.things.save(j); > db.things.save(t); > db.things.find(); { "_id" : ObjectId("4c2209f9f3924d31102bd84a"), "name" : "mongo" } { "_id" : ObjectId("4c2209fef3924d31102bd84b"), "x" : 3 }
  • 10. Запити SELECT j FROM things WHERE x=4 >db.things.find({x:4},{j:true}); { "_id" : ObjectId("4c220a42f3924d31102bd856"), "j" : 1 } { "_id" : ObjectId("4c220a42f3924d31102bd857"), "j" : 2 } ...
  • 11. Запити ● Атомарна операція зміни > db.posts.update( {_ id:ObjectId("4e77b3b8a3...a"), voters: { $nin: "calvin" } }, { votes: { $inc: 1 }, voters: { $push: "calvin" } } );
  • 12. Реплікації та шардинг ● Два види реплікацій
  • 13. Реплікації та шардинг ● Надійне сховище
  • 14. Типове застосування ● Найкраще підходить для ● Зтиснення та зберігання логів ● CMS системи ● Електрона комерція ● Ігри ● Мобільні платформи ● Аналітика та статус у реальному часі
  • 15. Типове застосування ● Погано підходить для ● Великих та складних транзакційних систем ● Проблем вимагаючих реляційних зв’язків ● Проблем потребуючих SQL
  • 16. Проекти що використовуют ● Craigslist ● MTV Networks’ next-generation CMS ● Intuit ● bit.ly ● Wordnik ● Harmony
  • 17. Play (1.2.3) is ● Чиста альтернатива роздутому джава інтерпрайз стеку ● Фокусується на продуктивній розробці ● Ідеально підходить для аджайл ● Дозволяє використовувати інструменти розробки та бібліотеки ● http://www.playframework.org
  • 18. Структура проекту app - controllers - modules - views conf data.yml lib modules public test
  • 19. PlayMorphia is ● Інструмент інтеграції монго у плей ● Швидкодія і простота ● POJO ● Вбудовані обєкти та посилання ● GridFS ● Атомарні операції
  • 20. Приклад ● $eq ● $size ● $ne ● $type ● $gt, $lt, $gte, $lte ● $elemMatch ● $in ● $exists ● $nin ● $all
  • 21. Приклад List<User> users = User.q().filter( "department eq", "IT" ).asList(); ● is exactly the same as List<User> users = User.q().filter( "department", "IT" ).asList();
  • 22. Приклад @Entity public class MTB extends Model { public String email; public String password; public String fullname; public boolean isAdmin; public MTB(String email, String password, String fullname){ this.email = email; this.password = password; this.fullname = fullname; } }
  • 23. Приклад // define the embedded class @Embedded public class Address { public String streetNo; public String state; … } // define the embedding class @Entity public class Customer extends Model { @Embedded public Address address; }
  • 24. Приклад ● Отримати всі List<MTB> mtbs = MTB.find().asList(); ● Створити новий MTB mtb = new MTB("jdow@email.com", "John", "Doe"); mtb.save();
  • 25. Приклад List<User> johns = User.q().filter("firstName", Pattern.compile("john", Pattern.CASE_INSENSITIVE) ).asList();
  • 26. Приклад List<User> users = Users.find( "address.street, address.city, address.country", "FuXingJie", "DuJiangYan", "China" ).asList();