DynamoDB Driver для пакета Laravel Auditing дозволяє зберігати логи аудиту в DynamoDB замість реляційних баз даних. Пакет підтримує роботу через черги (queues), тому запис логів не блокує запити користувачів. Це забезпечує високу швидкість роботи та стабільність системи навіть при пікових навантаженнях або тимчасовій недоступності DynamoDB.
Після налаштування драйвера ви можете активувати аудит для своїх моделей через Auditing package for Laravel:
use OwenIt\Auditing\Contracts\Auditable;
class User extends Model implements Auditable
{
use \OwenIt\Auditing\Auditable;
// Код вашої моделі
}
Також пакет надає зручний сервіс для отримання логів із DynamoDB:
use InfinityPaul\LaravelDynamoDbAuditing\AuditQueryService;
$auditService = app(AuditQueryService::class);
// Отримання логів із пагінацією
$result = $auditService->getAllAudits(
limit: 25,
lastEvaluatedKey: null,
filters: [
'entity_type' => 'App\\Models\\Wallet', // Обов'язково для швидкого пошуку
'entity_id' => '12345', // Обов'язково для швидкого пошуку
'start_date' => '2024-01-01T00:00:00', // Опціональна фільтрація за датою
'end_date' => '2024-12-31T23:59:59', // Опціональна фільтрація за датою
]
);
# Основні переваги
- Висока продуктивність: Використання DynamoDB для кращої масштабованості логів.
- Auto-scaling: DynamoDB автоматично керує ресурсами залежно від навантаження.
- Підтримка TTL: Автоматичне видалення застарілих записів.
- Гнучка схема: NoSQL-структура дозволяє зберігати різні типи даних аудиту.
- Query Service: Вбудований інструмент для зручного пошуку в логах.
- Інтеграція з Laravel: Повна сумісність із Laravel Auditing.
- Підтримка черг: Опціональна обробка в чергах для максимальної швидкодії.
💻 Вихідний код та документація доступні на GitHub: laravel-dynamodb-auditing