Play Mongodb

620 views
534 views

Published on

Short presentation about mongodb and playframework.

Коротка презентація про монгодб та Playframework.

Published in: Investor Relations
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
620
On SlideShare
0
From Embeds
0
Number of Embeds
63
Actions
Shares
0
Downloads
5
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Play Mongodb

  1. 1. Play with mongodb By: Wladislaw Merezhko
  2. 2. Mongodb is● NoSQL● Простота та потужність● Документ орієнтована (json/bson)● Вбудовані документи та масиви● Динамічна схема● Простота масштабування● Повна підтримка індексації
  3. 3. Філософія Mongodb● Простота розробки● Горизонтальне масштабування● Документна модель (JSON)● Працювати будь-де● Чотири основні риси - гнучкість - потужність - швидкодія - простота у використанні
  4. 4. Документи vs Таблиць● Документи зберігаються у колекціях● Колекції входять до складу баз даних● Колекції подібні до таблиць● Документи до записів у таблиці● Документи можуть мати різні поля
  5. 5. Звичайна таблицяCREATE TABLE customer (First_Namechar(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. 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. 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. 8. Запити● Створити новий документу у новій колекції > db.users.insert({ _id : "alex", name: { first:"Alex", last:"Benisson" }, karma : 1.0 });
  9. 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. 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. 11. Запити● Атомарна операція зміни > db.posts.update( {_ id:ObjectId("4e77b3b8a3...a"), voters: { $nin: "calvin" } }, { votes: { $inc: 1 }, voters: { $push: "calvin" } } );
  12. 12. Реплікації та шардинг● Два види реплікацій
  13. 13. Реплікації та шардинг● Надійне сховище
  14. 14. Типове застосування● Найкраще підходить для● Зтиснення та зберігання логів● CMS системи● Електрона комерція● Ігри● Мобільні платформи● Аналітика та статус у реальному часі
  15. 15. Типове застосування● Погано підходить для● Великих та складних транзакційних систем● Проблем вимагаючих реляційних зв’язків● Проблем потребуючих SQL
  16. 16. Проекти що використовуют● Craigslist● MTV Networks’ next-generation CMS● Intuit● bit.ly● Wordnik● Harmony
  17. 17. Play (1.2.3) is● Чиста альтернатива роздутому джава інтерпрайз стеку● Фокусується на продуктивній розробці● Ідеально підходить для аджайл● Дозволяє використовувати інструменти розробки та бібліотеки● http://www.playframework.org
  18. 18. Структура проектуapp - controllers - modules - viewsconfdata.ymllibmodulespublictest
  19. 19. PlayMorphia is● Інструмент інтеграції монго у плей● Швидкодія і простота● POJO● Вбудовані обєкти та посилання● GridFS● Атомарні операції
  20. 20. Приклад● $eq ● $size● $ne ● $type● $gt, $lt, $gte, $lte ● $elemMatch● $in ● $exists● $nin ● $all
  21. 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. 22. Приклад@Entity public class MTB extends Model { public String email; public String password; public String fullname; public boolean isAdmin; public MTB(String email, Stringpassword, String fullname){ this.email = email; this.password = password; this.fullname = fullname; }}
  23. 23. Приклад// define the embedded class@Embedded public class Address { public String streetNo; public String state; …}// define the embedding class@Entity public class Customer extendsModel { @Embedded public Address address;}
  24. 24. Приклад● Отримати всі List<MTB> mtbs = MTB.find().asList();● Створити новий MTB mtb = new MTB("jdow@email.com", "John", "Doe"); mtb.save();
  25. 25. ПрикладList<User> johns =User.q().filter("firstName", Pattern.compile("john", Pattern.CASE_INSENSITIVE)).asList();
  26. 26. ПрикладList<User> users = Users.find( "address.street, address.city, address.country", "FuXingJie", "DuJiangYan", "China").asList();
  27. 27. Запитання?
  28. 28. Дякую за увагу

×