Mongo

309 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
309
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
1
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Mongo

  1. 1. NOSQL Not Only SQL
  2. 2. ПІДХОДИ: • Допомогти RDBMS (для кешування) – Memcached (RAM), Redis • Google big table, Cassandra • Замість RDBMS – MongoDB, CouchDB • Графи – Neo4j
  3. 3. CACHE just fast
  4. 4. MEMCACHED Cons Pros • Складність • Least пошуку O(1) Recently Used cache • Задається час зберігання • Енергозалежна пам’ять • Відсутній механізм кластеризації • Обмежений функціонал Usecase: Дані з частими запитами (ключ сесії, базова інфа користувача)
  5. 5. REDIS Переваги Memcached + • ROM • Clustering • Transactions Usecase: стійкий мемкешд, тайли
  6. 6. RDBMS Key User Name Birthday City Key City Key Post Text Date Name Key Country Key User … …
  7. 7. DOCUMENT-ORIENTED DB { "Name":"Clark Kent", "Place":{ "City":"Metropolis", "Country":"USA" }, "Posts":[ { "Date":"04 June 2013", "Text":"Great day!" }, { "Date":"05 June 2013", "Text":"Hello, Universe!" } ] }
  8. 8. MONGODB sql without sql. and faster
  9. 9. PROS/CONS Pros: 1. 2. 3. 4. 5. 6. 7. 8. Документо-орієнтованість – документ відображає об'єкт, що значно спрощує програмування системи; Механізм вкладеності документів забезпечує певну можливість позбавлення від “важких” joinів; Потокова вставка; Хороша масштабованість, завдяки механізму “Віртуального Шардингу”; Map-Reduce фреймворк; Відсутність обмежень на структуру документа, що значно прискорює розробку; JSON; JS; Aggregation pipeline Cons: 1. 2. 3. 4. Ускладнює аналітику; Збитковість даних та потенційні проблеми спричинені їх вкладеністю; Відсутність транзакцій; Ускладнення підтримки з часом через відсутність схеми.
  10. 10. Порівняння швидкодії MongoDB та MSSql 2008
  11. 11. ПРИКЛАДИ ДОКУМЕНТІВ В БД Структура збереження тегів Структура закладу
  12. 12. ДОКУМЕНТИ • Вкладеність • 15 mb max size • _id !!! • Масиви, можливість індексування їх
  13. 13. QUERIES db.musicians.find({$or:[{"age":{$gte:"70"}},{"name":"George"}],"bands.name":{$in: ["Beatles","beatles"]}}).sort({"name":1}).pretty()
  14. 14. UPSERT (MERGE) Проапдейтити інфу про Джона Ленона, а якщо його немає в базі, то insert. > db.musicians.update({"name":"John","second name":"Lennon"}, {$set:{"born":"9 October 1940","age":"40"}},{"upsert":true}) > > db.musicians.findOne({name:"John"}) { "_id" : ObjectId("51d6597a58ddf14f9052a7db"), "age" : "40", "born" : "9 October 1940", "name" : "John", "second name" : "Lennon" } >
  15. 15. GEOSPATIAL INDEXES GeoJson: { <location field> : { type : "<GeoJSON type>" , coordinates : <coordinates> } } db.points.ensureIndex( { <location field> : "2dsphere" } ) Points within a Circle Defined on a Sphere db.<collection>.find( { <location field> : { $geoWithin : { $centerSphere : [ [ <x>, <y> ] , <radius in rad (10/3959)> ] } } } ) GeoJSON Objects Bounded by a Polygon db.<collection>.find( { <location field> : { $geoWithin : { $geometry : { type : "Polygon" , coordinates : [ <coordinates> ] } } } } ) Proximity to a GeoJSON Point db.<collection>.find( { <location field> : { $near : { $geometry : { type : "Point" , coordinates : [ <longitude> , <latitude> ] } , $maxDistance : <distance in meters> } } } )
  16. 16. ЖИТТЄВИЙ ПРИКЛАД
  17. 17. ДЯКУЮ за увагу

×