Postgres (Supabase) SQL - Поахувати кількість записів між датами
1000 UAH0. Є таблиця users, де id = id юзера (uuid).
1. Є таблиця usages, де зберігаються всі запити до API (тому що API має лімітувати кількість доступних запитів залежно від підписки). Має created_at.
2. Є таблиця subscriptions, де для кожного user_id має (або не має) бути запис зі status = 'active' || 'trialing'. Кожен запис має current_period_start, current_period_end.
3. Є таблиця user_activity, де є поля executions_amount_used, executions_amount_granted.
Таблиці 1-3 мають foreign key user_id до users.
Що потрібно зробити:
1. Потрібно ефективно на insert в usages (це коли трігернули API і записали активність), по user_id в таблицю user_activity записати кількість usages, що мають created_at між current_period_start та current_period_end від підписки зі статусом active або trialing. Якщо такої підписки немає, потрібно вивести усі usages юзера (щоб якщо він кенсельнув підписку, то executions_amount_used брався за увесь період що є в таблиці usages).
Не потрібно використовувати count(), потрібно використати estimates та функцію https://wiki.postgresql.org/wiki/Count_estimate. Дана функція вже є і вона працює, але запит чомусь видає рандомні дані, коли фільтр по даті.
Це може бути quick fix, але може потрібно буде переробити логіку трігера (він теж до речі є).
Якщо є кращі пропозиції це зробити, було б супер почути. Але нам не потрібно на кожен API call робити count по usages (таблиця велика), тому API call дивиться лише на таблицю user_activity і там мають бути актуальні цифри і все.
Подивіться уважно скріни зміна знаку < > взагалі не працює, тобно воно ніяк не враховує дату. Також воно може видавати usage не з початку дати підписки, хоча всі дати в UTC в базі даних.
Тому є розсинхрон, якщо підписка оновилась, воно підтягує usages з нерелевантної дати, до current_period_start, а має бути лише після current_period_start. Це теж треба пофіксити.
Додатки 4
-
949 22 0 Добрий день.
Бази даних - основна спеціалізація. Є ідеї як вирішити Вашу проблему.
-
Якщо вам не потрібен точний підрахунок, поточна статистика з таблиці каталогу
pg_classможе бути достатньо хорошою, і її набагато швидше отримати для великих таблиць.Воно і буде показувати не точний підрахунок. Краще вірно побудувати індекси, тоді і підрахунок буде швидким.
-
Кількість живих рядків у таблиці. Це лише оцінка, яку використовує планувальник. Вона оновлюється командами VACUUM, ANALYZE та деякими командами DDL, такими як CREATE INDEX.
-
Але нам не потрібно на кожен API call робити count по usages (таблиця велика),
ну так зробіть таблицю, де буде пораховано на початок і при кожній вставці - оновляти дані. буде більш-меньш точно і швидко
-
Я бы использовал MATERIALIZED VIEW что обновляется по расписанию
-
Актуальні фриланс-проєкти в категорії Бази даних та SQL
Система обліку, планування та продажу для грибної ферми
27 000 UAH
Ось повний, фінальний текст Технічного завдання (ТЗ). Він об'єднує всі ваші вимоги: 16 камер, 20 контрагентів, розклад по днях, облік тари, розрахунок рентабельності та обов'язковий поділ на три сорти грибів. Ви можете повністю скопіювати цей текст і надсилати розробникам або… Бази даних та SQL, Управління клієнтами та CRM ∙ 1 день 12 годин тому ∙ 51 ставка |
Зовнішній звіт 1С 8.3 — прогноз залишків товарів
1000 UAH
Потрібен зовнішній звіт (.erf) для 1С:Підприємство 8.3 (конфігурація уточнюється). Що має робити: Витягувати залишки товарів з бази Аналізувати історію продажів за останні 30 днів Рахувати середній темп продажів по кожному товару Визначати через скільки днів товар закінчиться… Бази даних та SQL, Управління клієнтами та CRM ∙ 1 день 12 годин тому ∙ 11 ставок |
Аудит безпеки веб-додатків та бази даних для кастомного CRM — спеціаліст з BaaS / бази даних як API (пенетраціяОгляд проекту Ми експлуатуємо спеціально розроблену платформу управління взаємовідносинами з клієнтами (CRM), яка обслуговує два сервісні бізнеси на єдиній системі. Це сучасний веб-додаток на JavaScript, підтримуваний базою даних як послугою (BaaS) і розгорнутий на безсерверній… Бази даних та SQL, Тестування та QA ∙ 2 дні 1 година тому ∙ 9 ставок |
Синхронізація баз данихСинхронізація програм Microsoft Access та CRM SalesDrive. Передача даних з CRM в Microsoft Access на першому етапі (зміна статусу воронки). Передача даних з Microsoft Access в CRM на другому етапі (зміна статусу в програмі). Бази даних та SQL ∙ 2 дні 7 годин тому ∙ 11 ставок |
Налаштування системи резервного копіювання та оптимізація серверної інфраструктуриМета робіт:Забезпечити надійне збереження даних CRM-системи та додатку шляхом впровадження автоматизованої системи резервного копіювання (Backups), а також провести ряд серверних доробок для підвищення стабільності, безпеки та продуктивності інфраструктури. DevOps, Бази даних та SQL ∙ 3 дні 5 годин тому ∙ 24 ставки |