Статьи

Что случилось с RavenDB 2.0?

Последняя стабильная версия RavenDB 1.0 была выпущена около шести месяцев назад, с тех пор мы усердно работали над добавлением новых функций, улучшением вещей и в целом выполнением Good Work.

Оглядываясь назад на последние полгода работы, на самом деле довольно сложно выделить основные вещи. Было так много, что мы сделали. Тем не менее, я думаю, что я могу взять некоторые вещи для слюноотделения для 2.0.

Прежде всего, мы значительно улучшили RavenDB Management Studio (RDBMS). Мы провели там много времени, и теперь вы можете делать практически все, что хотите, в RavenDB через студию. Это похоже на глупую особенность, верно? В конце концов, это просто обновленный пользовательский интерфейс, а RavenDB — это на самом деле серверный материал. Но он предоставляет вам как минимум на порядок лучшие инструменты и возможность более удобной работы с RavenDB.

образ

И это действительно только верхушка айсберга с точки зрения того, что нового в студии.

Но даже несмотря на то, что изменения в студии, вероятно, являются наиболее очевидными, мы проделали огромный объем работы над самим сервером. Вот некоторые из основных моментов.

Оперативная поддержка — мы потратили много времени на то, чтобы у людей-поводов было много причин быть довольными этим новым выпуском. Вы можете контролировать это с помощью любого стандартного инструмента мониторинга (SCOM, MOM, HP OpenView и т. Д.). Мы предоставляем гораздо больше данных через мониторы производительности и журналы. И мы даже добавили выделенные конечные точки, которые вы можете использовать для сбора информации о мониторинге (какая база данных в настоящее время делает, например, что), что даст оператору полное представление о том, что на самом деле там происходит.

Базовые комплекты — у  нас всегда были комплекты, и мы реализуем через них множество функций. Но в 2.0 мы взяли много пакетов и перенесли их в ядро, так что теперь вы можете легко их настроить и использовать.

Настройка их при настройке новой БД:

образ

Настройка репликации через пользовательский интерфейс:

образ

Теперь у нас есть поддержка пользовательского интерфейса управления для всех основных пакетов, что делает их использование намного проще.

API Changes () — это позволяет вам получать PUSH-уведомления от RavenDB Server, вы можете подписаться на события из определенного документа, набора документов или индекса. Это позволяет вам уведомить пользователя, если что-то изменилось, без необходимости делать дорогостоящий опрос. Студия на самом деле проводила много опросов, но теперь мы почти все изменили, чтобы они основывались на PUSH.

Вот пример использования:

store.Changes()
     .ForDocument("users/1")
     .Subscribe(notification =>
         {
             using(var session = store.OpenSession())
             {
                 var user = session.Load<User>(notification.Name);
                 Console.WriteLine("Wow! " + notification.Name + " changed. New name: " + user.Name);
             }
         });

Да, это так просто Улыбка.

Eval Patching — теперь вы можете запускать JS-скрипты для ваших объектов, чтобы изменять их на стороне сервера. Это идеально, если вы хотите выполнить миграцию (если вам это действительно нужно, обычно это не так), хотите выполнить какое-то сложное изменение на стороне сервера или просто нужно что-то сделать от имени администратора.

образ

Больше возможностей и контроля аутентификации. Теперь нам гораздо проще определить и контролировать, кто может получить доступ к серверу, и какие базы данных они могут использовать.

Вот пример предоставления сетевой службе доступа к базе данных пробной версии:

образ

И здесь у нас есть пример определения ключей API:

образ

Это позволяет очень легко определить ключ API для конкретного приложения (по сравнению с определением пользователей, как правило, вы обрабатываете приходящих администраторов).

Производительность индексации — мы потратили много времени на оптимизацию способов обработки индексации. В частности, сейчас мы проделали большую работу, чтобы убедиться, что мы не ждем ввода-вывода и используем как можно больше ядер, чтобы сделать работу еще быстрее. Даже когда вы отправляете много данных в RavenDB, индексирование очень быстро догоняет и задержка индексации намного ниже.

Лучшее сопоставление / уменьшение — наша реализация сопоставления / уменьшения была значительно улучшена, что позволяет нам повторно обрабатывать и обновлять существующие результаты с гораздо меньшими вычислительными и IO-потребностями в широком масштабе.

Лучшие аспекты — мы полностью переназначили поддержку аспектов, уменьшив стоимость стоимости одного аспекта, которая была раньше. Теперь мы можем быстро создавать фасеты независимо от того, сколько значений фасетов у вас есть в фасете, и мы даже поддерживаем разбиение по страницам и сортировку фасетов.

Лучший запрос IN — это звучит глупо, но поддержка эффективного запроса IN важна для многих сценариев, особенно когда число элементов в IN велико. У нас есть специальная поддержка для того, чтобы сделать это эффективно и легко сейчас.

Асинхронность. Мы сопоставили все стандартные возможности клиента в нашем Async API, что означает, что мы поддерживаем асинхронное разбиение, отработку отказа асинхронной репликации и весь шебанг. Это означает, что использовать RavenDB с C # 5.0 так же просто, как вы можете себе представить, все это сделано для вас.

Улучшения шардинга. В дополнение к асинхронной поддержке шардинга мы работали над улучшением самого шардинга, предоставляя вам больше точек интеграции и расширений, и по умолчанию сделали его немного умнее.

Резервное копирование в облаке — Резервное копирование сделать сложно, и мы решили сделать его проще. Помимо поддержки всех корпоративных инструментов резервного копирования и возможности запуска резервного копирования или экспорта (полного или инкрементного) вручную, теперь у нас есть возможность планировать автоматическое резервное копирование в облако.

образ

Вы можете настроить периодическое резервное копирование на Amazon Glacier или Amazon S3, и оно будет постепенно создавать резервные копии вашей базы данных там, как мы продвигаемся.

Импорт / экспорт CSV — глупо, но данные по-прежнему ходят в основном в виде плоских файлов, и RavenDB теперь поддерживает импорт и экспорт данных в формате CSV, так что вы можете легко извлекать некоторые данные в Excel или передавать некоторые данные, полученные из другого источника.

Отладка — теперь мы предоставляем гораздо больше возможностей для использования при отладке. Вы можете непосредственно посмотреть, как создается индекс (записи индекса, сохраненные поля и т. Д.), Вы можете проверить промежуточные этапы процессов отображения / сокращения RavenDB, как работают процессы ввода-вывода для загрузки документа, время индексации и многое другое.

Их больше, но я думаю, что этого пока достаточно.