Руководство разработчика по серверу JavaScript

Oracle спонсировал этот пост.

Разработчики прибегают к базам данных для хранения, получения и манипулирования данными всякий раз, когда приложения должны обрабатывать состояние. Этот подход больше не обсуждается; Использование баз данных для вашего уровня настойчивости является проверенным, зрелым подходом. Тем не менее, последующее решение обсуждалось на протяжении десятилетий: где вы должны разместить бизнес-логику вашего приложения?

Клиентская сторона против сервера бизнес-логика

С одной стороны, разработчики любят контролировать, выполняя все операции, касающиеся данных приложения на фронте. Написание сохраненного кода в базе данных требует знания SQL и процедурного языка, которую поддерживает ваша база данных. Будь то PL/SQL, T-SQL или PL/PGSQL, разработчик React может не быть знакомы с ним. Написание бизнес -логики на том же языке, что и frontend (или MicroService), приходит естественно.

Сторонники сохраненного кода, выполненные в базе данных, справедливо указывают на то, что дублирующая функция базы данных внутри приложения — обеспечение атомации, последовательности, изоляции и долговечности — является избыточным. Рассмотрим дублирование усилий во многих приложениях, и вы будете мучительно осознавать дополнительные усилия, потраченные. Кроме того, могут возникнуть проблемы в отношении качества данных, управления, аудита и так далее. И вы еще не говорили о преимуществах производительности хорошо написанного сохраненного кода.

Это обсуждение, по -видимому, достигло ситуации, если вы следите за социальными сетями и веб -сайтами, такими как Reddit и Stack Overflow.

Разве не было бы лучшим из обоих миров — знакомым языком программирования для написания вашей бизнес -логики, а также все преимущества запуска кода, где проживают данные? JavaScript, например, является одним из самых популярных языков. Oracle Database 23AI входит в число баз данных, поддерживающих JavaScript на стороне сервера на основе чрезвычайно популярного GRAALVM. MySQL является хорошим примером такой системы управления базами данных.

Давайте посмотрим, как разработчики могут написать JavaScript на стороне сервера в Oracle Database 23AI.

Что такое многоязычный двигатель и как вы его используете?

Многоязычный двигатель, или MLE для Short, позволяет разработчикам хранить и выполнять код JavaScript в базе данных Oracle. Он реализует стандарт Ecmascript 2023 и имеет много встроенных функций.

Вы можете использовать существующие модули JavaScript из сети доставки контента или написать свой код так же, как и в PL/SQL. Использование существующих модулей может значительно ускорить разработку, при условии, что лицензия модуля совместима с вашим проектом, и никакие другие проблемы соблюдения не предотвращают его использование.

В случае использования № 1: Встройте сторонние модули в ваше приложение

Общая задача базы данных состоит в том, чтобы проверить вход, чтобы помочь обеспечить качество данных. Популярная библиотека Validator предоставляет множество методов проверки строк. Давайте предположим, что ваша задача — проверить адреса электронной почты. Используя JavaScript, это просто.

Начните с загрузки модуля ValidatorJS с вашего любимого CDN. Следующий пример был запущен на macOS; Возможно, вам придется адаптировать аргументы скручивания для Windows.

Curl -Validator -1

Командная строка Oracle SQL Developer (SQLCL) предлагает наиболее удобный способ развертывания модуля JavaScript в базу данных. Следующая команда SQLCL создает новый модуль с именем Validator_Module в базе данных на основе загруженного файла. Хорошая практика также предоставить модульную версию.

MLE CREATE -MODULE -FILENAME VALIDATOR -13.12.0.JS -Module -name validator_module -version 13.12.0 1 MLE CREATE -MODULE -FILENAME VALIDATOR -1312.0.JS -MODULE -name validator_module -version 13.12.0

Модуль создан как новый объект схемы; Его свойства доступны в словаре данных. Прежде чем вы сможете использовать его в SQL и PL/SQL, вы должны создать так называемую спецификацию вызова. Согласно своей документации, ValidatorJS предлагает функцию с именем Isemail, которая делает именно то, что необходимо: подтвердите, является ли строка адресом электронной почты. Давайте разместим функцию SQL:

Создать функцию is_email (p_string varchar2) return boolean as mle videalator_module signature ‘default.isemail’; / Это все, что нужно. Давайте проверим некоторые строки: SQL> с помощью sample_data (email_address) как (2 значения 3 (‘не действительный адрес электронной почты’), 4 (‘user@domain.com’), 5 (‘user@’), 6 (‘user~ name@domain.com’) 7) 8 Select 9 email_address, 10 is_email (ementle_address) valid_email_address 13 / vamesdress 13 / vamesdress 11 Email_address valive_email_address _____________________________________ ______________________ Не действительный адрес электронной почты false user@domain.com true user@false user ~ name@domain.com true 123456789101112131415161718192021222242522627 Create Function is_email (P_STRININING2). Модуль valyator_module Подпись ‘default.isemail’;/ это все, что есть для этого. Давайте проверим некоторые строки: SQL> с помощью sample_data (email_address) как (2 значения 3 (‘не действительный адрес электронной почты’), 4 (‘user@domain.com’), 5 (‘user@’), 6 (‘user~ name@domain.com’) 7) 8 Select 9 email_address, 10 is_email (ementle_address) valid_email_address 13 / vamesdress 13 / vamesdress 11 Email_address valive_email_address _________________________________ __________________________ Не действительный адрес электронной почты false user@domain.com true user@false user ~ name@domain.com true

Любой клиент базы данных, способный выполнять вызовы SQL, может вызвать функцию.

Использование варианта № 2: Написание пользовательских модулей MLE

Написание пользовательских модулей JavaScript — еще один популярный вариант использования. Прежде чем погрузиться в механику, важно понять, как работает разрешение модуля в базе данных Oracle. В отличие от узла, где у вас есть несколько способов определения импортных спецификаторов, база данных хранит модули JavaScript в качестве объектов схемы. Следовательно, алгоритм разрешения именования Oracle должен отобразить спецификатор импорта с существующим модулем JavaScript. Это делается с использованием среды MLE, еще одного нового объекта схемы, представленного в выпуске 23AI.

Продолжая предыдущий пример, вы можете использовать ValidatorJS в вашем коде после создания среды MLE, как SO:

Создать mle env newStack_env imports (‘valyator’ validator_module); 1 Создать mle env newstack_env imports (‘valyator’ module valyator_module);

С созданной средой пришло время обратить внимание на модуль JavaScript. Давайте предположим, что ваша задача — проверить документ JSON, полученную через запрос POST. JSON должен содержать поле с именем «Запрашиватель». Затем вы должны предоставить действительный адрес электронной почты для значения. Вот пример того, как вы можете выполнить эту проверку:

Импорт валидатор из «vadivator»; /*** проверяет объект запроса post против определенных критериев. * * @param {Object} Data — корпус запроса post для проверки. * @Throws {error} Если данные не предоставляются или не выполняется проверка. * @returns {boolean} true, если запрос действителен */ export function validatepostrequest (data) {// Убедитесь, что данные были получены, сбой, если это не так. } /** * Проверьте, существует ли поле «Запрос» в органе запроса и * является ли его значение действительным адресом электронной почты. */ if («Запрос» в Data) {if (typeof Data.Requestor! == «String») {бросить новую ошибку («Поле запроса должно предоставить значение типа ‘string'»); } if (! valyator.isemail (data.requestor)) {бросить новую ошибку («Поле запроса не содержит действительного адреса электронной почты»); }} else {бросить новую ошибку («Поле требуемого запрашивателя отсутствует в запросе post»); } // Многие другие проверки возвращают true; } 12345678910111213141516171819202122232425262728293031323334 Импорт валидатор из «validator»; /*** проверяет объект запроса post против определенных критериев. * * @param {Object} Data — корпус запроса post для проверки. * @Throws {error} Если данные не предоставляются или не выполняется проверка. * @returns {boolean} true, если запрос действителен */export function validatepostrequest (data) {// Убедитесь, что данные были получены, сбой, если это не так. } /** * Проверьте, существует ли поле «Запрос» в органе запроса и * является ли его значение действительным адресом электронной почты. */ if («Запрос» в Data) {if (typeof Data.Requestor! == «String») {бросить новую ошибку («Поле запроса должно предоставить значение типа ‘string'»); } if (! valyator.isemail (data.requestor)) {бросить новую ошибку («Поле запроса не содержит действительного адреса электронной почты»); }} else {бросить новую ошибку («Поле требуемого запрашивателя отсутствует в запросе post»); } // Многие другие проверки возвращают true;}

Затем загрузите модуль в базу данных с помощью SQLCL:

MLE CREATE -MODULE -FILENAME NEWSTACK.JS -MODULE -name validate_post_request_module 1 mle create -module -filename newstack.js -module -name validate_post_request_module

Прежде чем вы сможете использовать код JavaScript в вашем приложении, вам необходимо предоставить спецификацию вызова:

Создать или заменить функцию validate_post_request (p_data json) return boolean as mle module validate_post_request_module env newstack_env Подпись ‘validatepostrequest’; 123456 Создать или заменить функцию validate_post_request (p_data json) return boolean as mle module validate_post_request_module env newstack_env Подпись ‘validatepostrequestest’;

Вот и все! Теперь вы можете использовать эту функцию в своем приложении. Опять же, любой клиент, способный выполнять SQL и PL/SQL, может беспрепятственно использовать эту функцию.

Краткое содержание

Разработчикам больше не нужно чувствовать себя напуганным при кодировании бизнес-логики на стороне сервера. Доступность JavaScript добавляет еще один язык для инструментов для разработчиков. Конечно, о MLE есть гораздо больше. Чтобы узнать больше, посетите руководство разработчика Oracle JavaScript и блога Oracle Developer.

Oracle предлагает широкий спектр технологий для строительства, тестирования и обслуживания приложений в облаке и в вашем центре обработки данных. Найдите бесплатные инструменты и учебные ресурсы на Developer.oracle.com Узнайте больше последних из Oracle Trending Stories YouTube.com/thenewstack Tech движется быстро, не пропустите эпизод. Подпишитесь на наш канал YouTube, чтобы транслировать все наши подкасты, интервью, демонстрации и многое другое. Группа подпишитесь с эскизом. Мартин Бах является старшим главным менеджером по продуктам для Oracle Database Technologies, где он помогает клиентам решать сложные проблемы. Ранее Мартин провел много насыщенных лет, помогая компаниям Fortune 100 с некоторыми из крупнейших, наиболее требовательных и громких Oracle … Подробнее от Martin Bach

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *