Статьи

Добро пожаловать в NuoDB Larks Release 2.2 GA!

Первоначально Написано Стивом Челлини

В сообщении в  блоге,  объявляющем о выпуске NuoDB Swifts Release 2.1, я сказал следующее:

Наш план состоит в том, чтобы всегда быть в продаже, с обновлениями 2.x, выпускаемыми ежеквартально в 2015 году.

Итак, мы здесь, как раз вовремя: Добро пожаловать в NuoDB Larks Release 2.2!

Larks является еще одной вехой в траектории выпуска 2.x, созданной в прошлом году для усиления способности NuoDB играть центральную роль в архитектуре данных предприятия. Как и в предыдущих выпусках, мы добавили важные функции, а также предоставили улучшенную масштабируемость, производительность и сотни улучшений на основе пользовательских сценариев (таких как наш собственный сайт Drupal на базе NuoDBnuodb.com ). Ниже ватерлинии, где это действительно важно, мы продолжаем вкладывать значительные средства в инфраструктуру нашей системы хранения, уровень транзакций и другие аспекты нашей распределенной системы.

В этом выпуске мы также выдвигаем на первый план тему, к которой мы снова и снова обращаемся в будущих выпусках: Непрерывная доступность с акцентом на доступность, отказоустойчивость и аварийное восстановление (DR).

Доступность

«Доступность» относится к готовности системы поддерживать операции … «высокодоступная» система — это система, в которой время простоя является «редким». В NuoDB мы используем термин «непрерывная доступность» для обозначения того, как распределенная архитектура NuoDB позволяет конфигурировать базу данных NuoDB с произвольным уровнем избыточности без какого-либо уровня простоя. В Swifts (выпуск 2.1 NuoDB) мы показали, как уникальная архитектура NuoDB может поддерживать одновременные полнофункциональные рабочие и аналитические рабочие нагрузки (см. Нашу Белую книгу HTAPпоследнем документе .

Устойчивость (и автоматизация)

В этом выпуске мы дополнили архитектурное преимущество NuoDB в плане доступности за счет возможностей в области «отказоустойчивости», которые мы широко определяем как способность системы обнаруживать, диагностировать и восстанавливать после состояний, которые представляют собой трендовые или актуализированные условия пониженной пропускной способности, наличие или ошибки.

В то время как отказоустойчивость является характеристикой, которая затрагивает все аспекты системы, наша инфраструктура автоматизации баз данных — с шаблонами баз данных, поддерживающими соглашения об уровне обслуживания — является ключом к нашему видению реализации полностью управляемой, самовосстанавливающейся возможности «Автопилот» для центра обработки данных. Например: отказоустойчивость автоматизации предусматривает способность системы обнаруживать увеличение транзакционной нагрузки на базу данных и добавлять еще один  обработчик транзакций NuoDB в ответ.

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

Давайте объясним политику повторных инкрементных принудительных действий, начав с примера. Предположим, ваша цель — «управлять базой данных с минимальной избыточностью». При создании базы данных вы примените предоставленный шаблон автоматизации NuoDB «Минимально избыточный». NuoDB делает все остальное, раскручивая Transaction Engine (TE) и Storage Manager как минимум на двух хостах. Автоматизация также гарантирует, что если хост по какой-либо причине выйдет из строя, автоматически будет выбран другой хост, на котором будут запускаться заменяющие TE и менеджеры хранилищ (SM), необходимые для поддержки SLA шаблона базы данных.

Упомянутая выше новая политика повторных инкрементных принудительных проверок позволяет более детально контролировать, как NuoDB будет принудительно перезапускать механизмы TE и SM при обслуживании SLA шаблона автоматизации. По умолчанию механизм TE или SM будет перезапущен по мере необходимости для обеспечения соблюдения SLA. Однако с помощью этой новой политики вы можете указать минимальное накопленное время безотказной работы, которое должно соблюдаться, прежде чем двигатель может быть рассмотрен для перезапуска, максимальное количество раз, которое двигатель должен быть перезапущен, и начальная задержка (в миллисекундах) для ожидания перед перезапуском двигателя в первый раз. «Инкрементная» часть новой политики вступает в игру, потому что эта начальная задержка удваивается во второй раз, когда процесс должен быть перезапущен, и удваивается снова в третий раз и так далее, пока не будет достигнут максимальный предел повторных попыток.Это обеспечивает мощный и гибкий подход к отказоустойчивости для вашей конкретной конфигурации, поскольку он позволяет администраторам решать, описывать, когда механизм на конкретном узле должен классифицироваться как «отказавший» и, таким образом, более недоступный для базы данных. Увидеть документация  для получения дополнительной информации.

Связанным дополнением в Larks являются Предопределенные сигналы тревоги для  NodeFailedEnforcerNodeBackoff и  EnforcerNodeBackoffMaxRetried : у вас всегда была возможность активировать сигналы тревоги для событий базы данных, таких как NodeFailed, чтобы помочь вам отслеживать состояние вашей базы данных и домена. Теперь мы упростили эту задачу, отправив продукт с уже включенными этими аварийными сигналами.

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

Предварительный просмотр аварийного восстановления

Larks также предлагает предварительный просмотр важного нового сценария NuoDB: где вы можете настроить базу данных для включения механизмов Storage Manager в отдельный центр обработки данных или регион для резервного копирования и восстановления данных. Это обеспечивает целостность базы данных в случае, если ваш основной регион становится недоступным из-за запланированных или незапланированных отключений, что гарантирует отсутствие потери данных.

Помимо аварийного восстановления, вот краткая информация о других новых функциях и возможностях этого выпуска:

SQL

  • Новые оптимизации и статистика SQL. Оптимизатор SQL, получивший значительное повышение в Swifts Release 2.1 благодаря добавлению эвристики на основе затрат, был усовершенствован, чтобы использовать гистограммы для поиска более эффективных планов соединения. Добавлена ​​новая статистика для количества различных значений для каждого префикса индекса, и теперь оптимизатор использует «средний размер ключа», чтобы находить гораздо более эффективные пути доступа к таблице. Новая специальная оптимизация находит оптимальные планы для запросов с комбинациями больших IN-списков, которые могут использовать индексы. Запросы ORDER BY … LIMIT теперь в несколько раз быстрее благодаря стратегии запросов, которая позволяет избежать сортировки всего результата.
  • Предложение DELETE FROM было расширено для поддержки ORDER BY … LIMIT, чтобы можно было ограничить количество удаляемых строк.
  • LAST_INSERT_ID (): новая функция системной информации SQL, которая возвращает последний автоматически сгенерированный идентификатор для столбца, объявленного как GENERATED ВСЕГДА В КАЧЕСТВЕ ИДЕНТИЧНОСТИ или ГЕНЕРАТОР ПО УМОЛЧАНИЮ В КАЧЕСТВЕ ИДЕНТИЧНОСТИ
  • Пользовательские функции (UDF) в  SQL  и  Java

Мы очень рады UDF. Эта новая возможность позволяет легко инкапсулировать часто используемый код в функции для повторного использования. Скалярная UDF может использоваться в качестве элемента списка в запросе выбора или в представлении или в предложении WHERE, а табличная функция UDF может использоваться в предложении FROM.

Вот пример, показывающий определение функции типа TABLE в предложении FROM. При этом используется оператор INSERT INTO … SELECT … с оператором RETURN.

SET DELIMITER @

CREATE FUNCTION fnc_tbl_get_teams (i_PlayerId STRING)
     RETURNS TABLE fnc_tbl_get_teams (PlayerId STRING, year STRING, position STRING, team_name STRING, stint STRING, games_played integer,conference STRING, Division STRING)
AS
     INSERT INTO fnc_tbl_get_teams 
        SELECT s.playerId, s.year, s.position, t.name, s.stint, s.gamesplayed, t.conferenceid,t.divisionid
         FROM scoring s, teams t
          WHERE s.playerId = i_PlayerId
         AND s.year = t.year
          AND s.teamid = t.teamid;
     RETURN;
END_FUNCTION;
@

И вот как это можно использовать:

SET DELIMITER ;
SELECT p.playerid,p.firstname,p.lastname,f.year,f.position,f.team_name,f.stint,f.games_played,f.conference,f.division
FROM players p, fnc_tbl_get_teams(p.playerid) f
 WHERE p.firstnhl = 2010 and p.lastnhl = 2011
 ORDER BY p.playerid, f.year, f.stint;
 PLAYERID   FIRSTNAME    LASTNAME    YEAR  POSITION        TEAM_NAME       STINT  GAMES_PLAYED  CONFERENCE  DIVISION 

 --------- ----------- ------------- ----- --------- --------------------- ------ ------------- ----------- ---------

 adamlu01  Luke        Adam          2010      L     Buffalo Sabres          1         19           EC         NE    

 adamlu01  Luke        Adam          2011      L     Buffalo Sabres          1         52           EC         NE    

 aulieke01 Keith       Aulie         2010      D     Toronto Maple Leafs     1         40           EC         NE    

 aulieke01 Keith       Aulie         2011      D     Toronto Maple Leafs     1         17           EC         NE    

 aulieke01 Keith       Aulie         2011      D     Tampa Bay Lightning     2         19           EC         SE   

Для получения дополнительной информации о UDF, смотрите документацию .

Документация и примеры

В нашем последнем выпуске NuoDB Swifts Release 2.1 мы полностью обновили нашу документацию. Вместе с Larks мы продолжаем эту работу с улучшенными и усовершенствованными разделами для:

  • C ++ API
  • ADO.NET
  • EXPLAIN
  • Состояние базы данных 
  • Обработка ошибок в транзакциях

… и во многих других областях. Как и прежде, мы ждем ваших отзывов о том, как мы здесь работаем.

Мы также продолжали упростить понимание и оценку NuoDB с помощью ряда улучшений примера приложения Storefront, чтобы помочь новичкам в NuoDB узнать больше о возможностях этого продукта. Проверьте это — он поставляется с продуктом и его можно найти в Центре администрирования NuoDB. Полный тур, который включает в себя Storefront и другие образцы, можно найти  здесь .

Обновления системных требований

  • Java: Когда прошлой осенью был выпущен NuoDB Swifts Release 2.1, мы объявили, что будем отказываться от поддержки Java 1.6. В этом выпуске Java 1.6 больше не поддерживается для хостов NuoDB; пожалуйста, используйте Java 1.7 или Java 1.8. Клиентские приложения не затрагиваются. Смотрите документацию для получения дополнительной информации.
  • Мы добавили поддержку RHEL v7 и CentOS
  • Docker: NuoDB всегда работал в конфигурациях Docker, но следует учитывать некоторые интересные особенности конфигурации и развертывания. отличном сообщении в блоге .

В заключение

Для получения дополнительной информации о Larks, пожалуйста, посетите примечания к  выпуску .

Как всегда, большой крик нашим клиентам и партнерам; NuoDB Larks — лучший релиз благодаря вашей помощи!

Увидимся через три месяца, когда NuoDB Robins выйдет   на улицу. Мы думаем, вам понравится 🙂