{"id":50472381,"url":"https://github.com/rubyhcm/audit-log-poc","last_synced_at":"2026-06-01T11:03:17.479Z","repository":{"id":355051475,"uuid":"1226560276","full_name":"rubyhcm/audit-log-poc","owner":"rubyhcm","description":null,"archived":false,"fork":false,"pushed_at":"2026-05-22T16:53:51.000Z","size":27390,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-22T20:59:05.507Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TeX","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rubyhcm.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-01T14:57:58.000Z","updated_at":"2026-05-22T16:53:56.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/rubyhcm/audit-log-poc","commit_stats":null,"previous_names":["rubyhcm/csdl","rubyhcm/audit-log-poc"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/rubyhcm/audit-log-poc","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rubyhcm%2Faudit-log-poc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rubyhcm%2Faudit-log-poc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rubyhcm%2Faudit-log-poc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rubyhcm%2Faudit-log-poc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rubyhcm","download_url":"https://codeload.github.com/rubyhcm/audit-log-poc/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rubyhcm%2Faudit-log-poc/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33771630,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-01T02:00:06.963Z","response_time":115,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-06-01T11:03:17.264Z","updated_at":"2026-06-01T11:03:17.470Z","avatar_url":"https://github.com/rubyhcm.png","language":"TeX","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Audit Log PoC — PostgreSQL Partitioning + JSONB\n\nResearch project: high-performance audit log system on PostgreSQL 16.\n\n## Quick start (từ máy trắng)\n\n### Cách 1: Docker (Khuyến nghị)\n\n```bash\n# 1. Clone repository\ngit clone \u003crepo-url\u003e\ncd csdl\n\n# 2. Copy và chỉnh sửa cấu hình (tùy chọn)\ncp .env.example .env\n# Chỉnh sửa .env theo nhu cầu\n\n# 3. Khởi động PostgreSQL qua Docker\ndocker-compose up -d\n\n# 4. Chạy benchmark\nbash bench/run_baseline.sh\nbash bench/run_proposed.sh\n\n# 5. Xem kết quả performance\nbash bench/analyze_performance.sh\n```\n\n### Cách 2: Local PostgreSQL\n\n```bash\n# 1. Prerequisites\n#    PostgreSQL 16, psql, pgbench — đã có sẵn trên Ubuntu 22.04 WSL2\n\n# 2. Bootstrap database (run as superuser)\n#    Roles phải tồn tại TRƯỚC khi tạo database với OWNER db_admin\npsql \"postgresql://postgres:postgres@localhost/postgres\" -f sql/00_roles.sql\npsql \"postgresql://postgres:postgres@localhost/postgres\" -c \"CREATE DATABASE audit_poc OWNER db_admin;\"\n\n# 3. Schema\npsql \"postgresql://db_admin:db_admin_pass@localhost/audit_poc\" -v ON_ERROR_STOP=1 -f sql/01_schema_audit.sql\npsql \"postgresql://db_admin:db_admin_pass@localhost/audit_poc\" -v ON_ERROR_STOP=1 -f sql/02_schema_business.sql\n\n# 4. Seed data (~5-8 GB, chạy nền)\npsql \"postgresql://db_admin:db_admin_pass@localhost/audit_poc\" -v ON_ERROR_STOP=1 -f sql/03_seed_data.sql\n\n# 5. Audit function + triggers\npsql \"postgresql://db_admin:db_admin_pass@localhost/audit_poc\" -v ON_ERROR_STOP=1 -f sql/04_audit_function.sql\n\n# 6. Immutability\npsql \"postgresql://db_admin:db_admin_pass@localhost/audit_poc\" -v ON_ERROR_STOP=1 -f sql/05_security_immutability.sql\n\n# 7. (Optional) Hash chain\npsql \"postgresql://db_admin:db_admin_pass@localhost/audit_poc\" -v ON_ERROR_STOP=1 -f sql/06_hash_chain.sql\n\n# 8. (Optional) DDL Audit - Audit các thay đổi schema (requires superuser — event trigger creation)\npsql \"postgresql://postgres:postgres@localhost/audit_poc\" -v ON_ERROR_STOP=1 -f sql/09_audit_ddl.sql\n\n# 9. Indexes\npsql \"postgresql://db_admin:db_admin_pass@localhost/audit_poc\" -v ON_ERROR_STOP=1 -f sql/07_indexes.sql\n\n# 10. GRANT/REVOKE\npsql \"postgresql://db_admin:db_admin_pass@localhost/audit_poc\" -v ON_ERROR_STOP=1 -f sql/08_grants.sql\n\n# 11. Benchmark\nbash bench/run_baseline.sh\nbash bench/run_proposed.sh\n```\n\n## Tính năng mới (Recent Enhancements)\n\n### 📊 Performance Monitoring\n- **pg_stat_statements**: Tự động bật trong benchmark để theo dõi hiệu năng\n- **analyze_performance.sh**: Phân tích truy vấn chậm, tần suất gọi, và tác động của audit trigger\n- **monitor.sh**: Real-time monitoring trong khi chạy benchmark (kết nối, TPS, WAL, cache hit ratio)\n\n### 🔍 DDL Audit Support\n- **sql/09_audit_ddl.sql**: Event trigger ghi lại các thay đổi schema (CREATE, ALTER, DROP)\n- Lưu trữ trong bảng `audit_ddl_logs` với thông tin người dùng và câu lệnh SQL\n\n### 🐳 Docker Support\n- **docker-compose.yml**: Khởi chạy PostgreSQL 16 với pg_stat_statements sẵn sàng\n- **Adminer**: Web interface quản lý database tại http://localhost:8080\n- Cấu hình qua file `.env` (copy từ `.env.example`)\n\n### 🗂️ Partition Management\n- **scripts/manage_partitions.sh**: Quản lý partition tự động\n  - `create`: Tạo partition cho 3 tháng tới\n  - `drop_old`: Xóa partition cũ (mặc định \u003e 6 tháng)\n  - `list`: Liệt kê tất cả partition và kích thước\n\n### 📖 Enhanced Documentation\n- **docs/GETTING_STARTED.md**: Hướng dẫn chi tiết từng bước với Docker và local setup\n- Tích hợp performance monitoring và DDL audit vào workflow\n\n## Reset\n\n```bash\npsql \"postgresql://postgres:postgres@localhost/postgres\" -f sql/99_cleanup.sql\n```\n\n## Tài liệu\n\n- `6-baocao.md` — Khung báo cáo nghiên cứu\n- `7-huongdan-xay-dung-source.md` — Hướng dẫn kỹ thuật chi tiết\n- `8-ke-hoach-xay-dung.md` — Kế hoạch phase-by-phase\n- `docs/results-summary.md` — Kết quả thực nghiệm (fill sau khi chạy bench)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frubyhcm%2Faudit-log-poc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frubyhcm%2Faudit-log-poc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frubyhcm%2Faudit-log-poc/lists"}