Neon Serverless Postgres: Database Branching English для розробників

Досліджуйте англійську лексику, яку використовують розробники Neon Serverless Postgres — розгалуження, автоматичне масштабування і об’ єднання з’ єднань.

Introduction

Neon — це безсерверна платформа Postgres, яка ввела набір можливостей — зокрема, розгалуження бази даних — які вимагають нового словника для точного обговорення. Для розробників, які використовують традиційні керовані служби Postgres, такі терміни, як обчислювальна кінцева точка, розгалуження потоку роботи і автоматичне масштабування мають певне значення у контексті Neon, яке відрізняється від їх загального використання. У цій статті пояснюється вісім основних термінів, які допоможуть вам прочитати документацію з Neon, взяти участь у обговоренні архітектури і написати чіткі технічні специфікації для програм, створених на Neon.

Неоновий безсерверний словник Postgres

** Database branch ** — гілка бази даних Neon з копіюванням при записі, яка спільно використовує об’ єкт зберігання з батьківською гілкою до моменту розгалуження. На відміну від повної копії бази даних, гілка створюється майже миттєво, незалежно від розміру даних, оскільки вона використовує механізм лінійного копіювання на рівні зберігання. Гілки використовуються для ізоляції середовищ розробки, тестування та перегляду.

“Ми створюємо гілки баз даних для кожного запиту на витягування в нашому CI-конвейєрі — кожна гілка є ізольованою копією виробничих даних на момент розгалуження, тому розробники можуть запускати міграції і тестові запити проти реальних даних без впливу один на одного або на виробництво.”

** Гілка з головної гілки ** — дію, яка створює нову гілку бази даних, яка починається з поточного стану головної гілки. Це найпоширеніший шаблон гілок, який використовується для створення середовищ для розробки можливостей, тестування або попереднього розгортання, яке починається з відомого доброго стану бази даних.

“Наша робота з попереднього перегляду гілок йде з головної гілки у час створення PR — гілка містить всі дані і схему з виробничої гілки на той момент, а міграції у PR застосовуються до гілки до активації адреси URL попереднього перегляду.”

** Автомасштабування ** — можливість Neon автоматично змінювати обчислювальні ресурси — процесор і оперативну пам’ ять — що виділяється кінцевій точці бази даних у відповідь на фактичне навантаження запитів, збільшуючи масштабування під час періодів високого навантаження і зменшуючи масштабування до нуля під час бездіяльності. Це виключає необхідність забезпечення пікової потужності і зменшує витрати для застосунків з змінним або непередбачуваним навантаженням.

  • “Оскільки автомасштабування Neon автоматично обробляє пікове навантаження, ми більше не змінюємо розмір обчислень у найактивніший період дня — у інші години обчислення масштабуються до мінімального рівня, а наші витрати на Postgres пропорційно зменшуються.” *

** Драйвер без сервера ** — Невелика клієнтська бібліотека Postgres, призначена для використання у межах і середовищах без сервера, де постійне з’ єднання TCP непрактичне або неможливе. Безсерверний драйвер Neon використовує HTTP або WebSockets для видання запитів, що робить його сумісним з середовищами виконання, такими як Cloudflare Workers і Vercel Edge Functions.

“Ми перейшли з node-postgres на драйвер Neon для наших Vercel Edge Functions — протокол запитів на основі HTTP працює без постійних з’ єднань і сумісний з мережевими обмеженнями edge runtime.”

** Об’ єднання з’ єднань ** — практика підтримки групи попередньо встановлених з’ єднань з базою даних, які можна використовувати у багатьох запитах клієнтів, зменшуючи витрати на встановлення нового з’ єднання для кожного запиту. У середовищах без сервера, де кожне викликання функції може створити нове з’ єднання, об’ єднання з’ єднань є критичним для швидкодії і стабільності бази даних.

“Кожен виклик безсерверної функції відкривав нове з’ єднання Postgres, і під навантаженням ми досягали обмеження з’ єднання Neon - додавання сумісного з PgBouncer об’ єднання з’ єднань через вбудований пул Neon зменшило наші активні з’ єднання з 200 до менше ніж 20.”

** Обчислити кінцеву точку ** — екземпляр сервера Postgres, пов’ язаний з гілкою Neon. Кожна гілка має свою власну кінцеву точку обчислення з унікальним рядком з’ єднання, що надає змогу різним середовищам з’ єднуватися з різними гілками одного і того ж проекту бази даних без спільного використання процесу сервера.

“Кожна гілка бази даних має свою власну кінцеву точку обчислення і рядок з’ єднання — наша система CI зберігає рядок з’ єднання гілки як змінну середовища у попередньому розгортанні, щоб програма з’ єднувалася з ізольованою гілкою, а не з виробничою.”

** Відновлення за точкою часу ** — можливість створення нової гілки бази даних з будь- якої точки у недавній історії існуючої гілки, а не лише з поточного стану. Neon зберігає журнал запису, який надає змогу створювати гілки з будь- якого моменту у вікні зберігання, що дозволяє відновлювати дані після випадкових змін або помилок у схемах.

“Після того, як розробник випадково вилучив таблицю в стаджі, ми використовували відновлення в момент часу, щоб створити нову гілку з 30 хвилин до інциденту - відновлені дані були доступні менш ніж за хвилину і ми змогли відновити без втрати даних.”

** Потік роботи з розгалуженнями ** — шаблон розробки і розгортання, який використовує гілки бази даних для відображення потоку роботи з розгалуженнями коду. Кожна гілка коду або запит на завантаження отримує відповідну гілку бази даних, що дозволяє перенесення схеми і зміни даних перевіряти ізольовано перед їх об’ єднанням з головною гілкою.

“Наша робота з розгалуженнями повністю автоматизована: коли відкривається запит на витягування, робота GitHub Actions створює гілку Neon, застосовує файли міграції PR, висаджує тестові дані і відсилає рядок з’єднання гілки до опису PR для середовища перегляду.”

Зміна значення змінних, що визначають структуру даних

У традиційній конфігурації бази даних, зазвичай є одна стадійна база даних, спільна для всіх розробників, і одна виробнича база даних. Міграції схеми є ризикованими, тому що вони впливають на всіх, і тестування з даними виробничого масштабу вимагає або повільної повної копії, або роботи зі штучно малими тестовими наборами даних.

Модель розгалуження Neon фундаментально змінює це. Оскільки гілки є миттєвими і спільно використовують об’ єм зберігання з батьківською, вартість створення ізольованого середовища бази даних знижується до майже нуля. Це робить практичним надання кожному розробнику, кожному запитові на витягування і кожному попередньому розгортанню власного ізольованого середовища бази даних з реалістичними даними - практика, яка була теоретично бажаною, але практично заборонена до існування безсерверного розгалуження.

Потік роботи з розгалуженнями також змінює спосіб обробки перенесення схем. Замість того, щоб розгортати перенесення безпосередньо до спільної бази даних, і сподіватися, що воно спрацює, ви спочатку застосовуєте його до ізольованої гілки, запускаєте тести інтеграції на ній і тільки після перевірки перенесення на головну гілку. Цей шаблон значно зменшує ризик інцидентів, пов’язаних з міграцією у виробництві.

З’єднання словника

Зрозуміти ці вісім термінів як пов’язану систему - а не як ізольовані концепції - це ключ до отримання повної цінності від Neon. Робочий процес розгалуження залежить від дешевих розгалужень бази даних, що можливо завдяки моделі зберігання Neon copy-on-write. Безсерверний драйвер і автомасштабування роблять платформу придатною для периферійних і безсерверних середовищ виконання. Об’ єднання з’ єднань робить його стабільним під навантаженням. А відновлення в точці часу забезпечує безпечну мережу, яка робить безпечним швидке повторення. Разом вони представляють суттєвий підхід до сучасного, хмарного розробки Postgres.

Розробка графічного інтерфейсу користувача: практичний посібник для початківців

Будьмо чесними - “розгалуження” в контексті бази даних може здатися неймовірно абстрактним. Легко застрягти в технічному жаргоні, коли ви намагаєтеся пояснити це колегі, особливо якщо вони не відразу знайомі з безсерверною архітектурою Neon. Ключ не тільки в тому, щоб знати визначення розгалуження - це в тому, щоб повідомляти вплив і контроль, що надає Neon. Поширена пастка полягає в тому, що кожен розуміє концепцію одночасного розгортання декількох версій бази даних, що саме те, що полегшують можливості розгалуження Neon.

Розгляньте цю розмову на Slack:

Сара (головний розробник): «Привіт, команда, нам потрібно випустити версію 2.1 схеми «customer_data». Давайте використаємо розгалуження, щоб забезпечити плавний перехід і зменшити перерви»

Марк (Молодіжний розробник - новий в Neon): “Гаразд, але… як це насправді працює? Я просто бачу слово «розгалуження» і це відчувається дуже складно»

Проблема тут для Сари - перетворити абстрактну концепцію на щось конкретне. Хорошим підходом буде обрамлення його навколо реалістичного сценарію: «По суті, ми створюємо окрему експериментальну гілку, де ми можемо тестувати версію 2.1 без впливу на нашу живу виробничу базу даних. Це дозволяє нам перевіряти зміни і відкидати їх, якщо це потрібно — це набагато безпечніший процес, ніж пряме оновлення. Це про передачу * переваги * контролю і відкидання, а не просто про повторення технічного терміну. Аналогічно, під час написання опису завдання на захоплення, ви не просто вкажете « Реалізовано розгалуження ». Замість цього зосередьтеся на тому, * що * було розгалуженим і * чому *: « Створено гілку « customer_ data_ v2. 1 » для тестування нових змін схеми перед повним розгортанням. »

Іншим важливим аспектом є розуміння того, як Neon обробляє автомасштабування відносно цих гілок. Якщо гілка відчуває значно більшу навантаження, ніж головна гілка, Neon може автоматично масштабувати ресурси - додаючи більше екземплярів бази даних - для обробки збільшеного попиту * без * потреби вручну. Це підсилює ідею динамічного контролю і оптимізації продуктивності.

-- Example: Monitoring CPU usage on a Neon Postgres branch
SELECT pg_stat_resource_usage('customer_data_v2.1') AS resource_usage;

Це просте SELECT повідомлення, коли регулярно моніториться, надає цінний взірець здоров’ я гілки і дозволяє вам проактивно вирішувати потенційні проблеми - чи це масштабування ресурсів або дослідження вузлів продуктивності. Передача цього рівня деталізації - здатність інтелектуально моніторити і реагувати - має вирішальне значення для демонстрації цінності Neon. Пам’ятайте, чітке спілкування перетинає прогалину між технічною складністю і практичним застосуванням.

Поширені запитання

Про що ця стаття "Neon Serverless Postgres: Database Branching English для розробників"?

Досліджуйте англійську лексику, яку використовують розробники Neon Serverless Postgres — розгалуження, автоматичне масштабування і об’ єднання з’ єднань.

Чи безкоштовна ця стаття?

Так. Усі статті на CoderSlingo, включно з цією, доступні безкоштовно без реєстрації.

Скільки часу займає читання "Neon Serverless Postgres: Database Branching English для розробників"?

Приблизно 7 min.