CodeFest 2014. Michael Yarichuk — Обзор новой версии базы данных RavenDB 3.0
Upcoming SlideShare
Loading in...5
×
 

CodeFest 2014. Michael Yarichuk — Обзор новой версии базы данных RavenDB 3.0

on

  • 997 views

 

Statistics

Views

Total Views
997
Views on SlideShare
907
Embed Views
90

Actions

Likes
0
Downloads
4
Comments
0

2 Embeds 90

http://2014.codefest.ru 87
http://backend.codefest.ru 3

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • RavenDB - NoSQL Document Database- что такое NoSQL- что такое document database -> сохраняет бизнесс оъект в оригинальном виде, включая встроенные объектыБД второго поколениядрайверы для .NET, JVM, node.jsПоддержка REST -> использование из других языков --> способных на запросы HTTP
  • Первое поколение БД NoSQL- сложная администрация и конфигурациямного работы вручнуюпример - CouchDB --> query соотвествие индексу --> table scanпример - Redis --> нет поддержки failover
  • Мы все еще любим SQL, но не во всемонодинаковополезенХорошо справляется с reporting, табличными данными- был спроектирован в 70-е, для решения задач акуальных в то время- не предназначен для горизонтальногомаштабирования- дорогие машины, дешевые пользователи- жесткая схема данных, медленные изменения
  • В общем, RavenDB просто работаетнет нужды в администрировании, самонастраивающаяся функциональностьDynamic queries (dynamic indexes)Dynamic schemaРеализация map/reduceлегко и интуитивно работать, не происходит impedance mismatchпредотвращает стрельбу по ногам* рассказать что такое impedance mismatch (забивать гвозди микроскопом)
  • По умолчанию предотвращает стрельбу по собственным ногам- невозможны огромные результаты queries (есть специализированный streaming API)ограничение количества обращений к серверув каждой сессии(предотвратить n+1 queries)No locks  no deadlocksнет Tablescanавтоматические индексы
  • Example of unbounded result set
  • Example of SELECT N + 1 query (using PetaPoco micro-orm framework)
  • * Использование объекта внутри объекта - объяснить о том что нет join в RavenDB* объяснить include
  • RavenDB vs SQL- запрос на SQL сервер возвращает консистентные данные. Для этого требуется много дорогостоящих блокировок (locks)запрос на RavenDB возвращает то что имеется в наличии СЕЙЧАС (eventual consistency)гарантии согласованности ACID уRavenDBОбъяснениесогласованности котораядостигается со временем  eventual consistency - пример банковской системы * eventual consistency позволяет реализоватьоптимизации, например low latency/low throughput  high latency/high throughput
  • Что можетChanges API  объяснение
  • В RavenDB встроенный кэш- Http cache, если возможно предотвращает нагрузку на сервер (304 not modified)Агрессивный кэш, предотвращает запросы на сервер. Использует Changes API для cache invalidation* почему не использовать всегда агрессивный кэш? racing condition между query и событием Changes API которое должно сделать invalidate на результат query
  • это совершенно не сложно, а в особенности в RavenDB.Map/reduce = group by.
  • - даже в простой БД как Northwind, нужно несколько join-ов- каждый query - заново весь процесс (table scan/запрос индексов)а что будет когда есть 50 миллионов заказов?
  • общее описание процесса индексациипосле индексации, запросы идут на pre-computed data - результат индексацииupdate не вызывает полную перестройку индекса, а только релевантную частьопределение индекса map/reduce – Total orders by customer
  • этот запрос гораздо дешевлечем в SQL, вне зависимости от количества данных. (query on pre-computed data)
  • High Availability это когда происходит чтото плохое. Например шашлык из серверов.Replication в RavenDB легко и быстро конфигурируется, поддерживает автоматический Failover.нет нужды в конфигурации клиентской стороны RavenDB - автоматичски конфигурируется топология репликации и failover
  • вот как конфигурируется replication/failover
  • Новый движок RavenDB - low level key/value store.поддержка ACIDвысокая производительностьспособность производить околомиллиона writes/secсособность производить около16 миллионов reads/secАрхитектура REST работает через интерфейсы OWINHTML5 Manement StudioRavenFS - распределенная файловая системаспособен справлятся с очень большими файламипередает измененая только тех частейфайловкоторые действительно изменились

CodeFest 2014. Michael Yarichuk — Обзор новой версии базы данных RavenDB 3.0 CodeFest 2014. Michael Yarichuk — Обзор новой версии базы данных RavenDB 3.0 Presentation Transcript

  • Михаил Ярийчук Hibernating Rhinos
  • http://forum.xcitefun.net/chinese-strong-child-t9242.html
  • 1. Загрузить в БД новый объект 2. Получить объект из БД используя запрос
  • http://freedomfeens.com/blog/2013/02/02/prohibited-thou-shalt-not- photoshop/obamas-shotgun-foot/
  • http://demotivatorium.ru/demotivators/d/21954/
  • http://fc03.deviantart.net/fs70/i/2011/296/5/d/huginn_and_muninn_by_victoryorde ath-d4dq7zy.png
  • Михаил Ярийчук Hibernating Rhinos michael.yarichuk@hibernatingrhinos.com Вопросы? http://www.eyeflow.com/12-questions-to-ask-a- prospective-seo-consultant/ RavenDB Google Group RavenDB Github Repository