Блог

Таксуване на базите данни според това, което наистина се използва

Всяко приложение в Mythex, което трябва да съхранява данни, получава собствена база Postgres, а използването на базата на публикувано приложение се изплаща от същия баланс от кредити, както изграждането. До края на септември ние оценявахме това използване според това колко дълго работи сървърът на приложението. Оценката се оказа грешна по начин, който имаше значение, и я заменихме: всяка база сега се таксува според изчислителната мощност, която доставчикът ѝ е измерил, един завършен час наведнъж, и всеки час може да бъде таксуван само веднъж.

Как работят базите данни

Всяка база работи на serverless Postgres, който се мащабира до нула: след няколко минути без активност заспива, а се събужда при следващата заявка. Докато е будна, може да мащабира изчислителната си мощност нагоре и надолу според натоварването. Именно това прави „база за всяко приложение“ достъпна — повечето приложения са тихи през по-голямата част от времето, а спяща база струва почти нищо.

Това означава, че цената на една база зависи от две неща, които не виждаме отвън: колко време е била будна и колко голяма е била, докато е била будна.

Какво оценката сбърка

Първоначалният ни измервател правеше едно допускане: за всеки час, през който сървърът на публикувано приложение работи, таксуваше база данни с най-малкия размер на изчислителна мощност.

Това беше грешно по три начина:

  1. Размерът беше грешен. Базите всъщност работеха с по-голям размер по подразбиране от този, който оценката предполагаше.
  2. Базите се мащабират автоматично. Под натоварване растат, а оценката никога не ги виждаше.
  3. Базите не следват сървъра на приложението. Базата остава будна, когато каквото и да е я заявява — приложението, фонова задача, скрипт, който я проверява на всеки няколко секунди — независимо дали сървърът на приложението работи.

Нетният резултат беше, че оценката таксуваше на потребителите приблизително половината от това, което базите всъщност струваха. Това не е устойчиво за нас, а и означаваше, че числата за използване в приложението не значат това, което хората си мислеха.

Измерване вместо предположение

Доставчикът ни на бази данни отчита за всеки проект изчислителни единици-секунди на час — колко изчислителна мощност е използвал наистина, включително размера. Затова измервателят сега работи така:

  1. За всяко публикувано приложение с база данни вземи измереното използване за всеки завършен час от момента, в който приложението е пуснато на живо.
  2. Преобразувай това използване в цена по цената на доставчика, приложи тарифата на плана и го таксувай от кредитите на собственика на приложението.
  3. Гледай назад до един ден при всяко изпълнение, така че часовете, пропуснати, докато API ни се рестартира, да се таксуват по-късно.

Съхранението се таксува отделно, според размера, защото не зависи от активността.

Никога да не таксуваме час два пъти

Измервател за таксуване, който работи на повече от един сървър и може да се срине и да се повтори, трябва внимателно да не таксува двойно. Всеки час от всяка база се заявява в собствения ѝ ред в базата данни, преди да бъде таксуван, с уникалност върху двойката (база, час). Ако два сървъра или повторен опит се опитат да таксуват същия час, успява само едно заявяване.

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

И когато включихме измерваното таксуване, то започна от следващия пълен час. Часовете преди това вече бяха таксувани по старата оценка; таксуването им отново по измерени данни би таксувало този период два пъти.

Какво означава това, ако изграждаш с Mythex

  • Сметката ти за база данни вече отразява това, което базата ти е правила. Рядко използвано приложение струва много малко; приложение, което непрекъснато заявява базата си, ще я държи будна и ще струва повече.
  • Най-голямата лостова точка е как приложението ти използва базата. Проверката на базата на всеки няколко секунди я държи будна денонощно. Помоли ИИ да извлича данни при нужда или да ги кешира и базата може да спи. Нашето ръководство какво е база данни обхваща основите.
  • Pro плановете плащат половината от тарифата на Free за хостинг, бази данни и съхранение. Подробностите са в документацията за кредити.

Какво взехме от това

  • Оценките на разходи, които зависят от употреба, се разместват. Когато доставчикът нагоре по веригата може да каже какво е било използвано, таксувай според това.
  • Направи таксуването идемпотентно на най-малката единица, която таксуваш. За нас това е един час от база данни.
  • Когато трябва да се провалиш, провали се в полза на клиента.

Mythex · Pricing · Създай всичко с ИИ · Шаблони за уебсайтове и приложения · Mythex в сравнение · Речник на създаването на приложения с ИИ · Безплатни инструменти за създаване на приложения с ИИ · English

English አማርኛ العربية বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)