https://github.com/restuwahyu13/csv-streaming
Example implementation CSV streaming data as worker service
https://github.com/restuwahyu13/csv-streaming
api-rest csv-import kafka-streams message-queue streaming-data worker-service
Last synced: 16 days ago
JSON representation
Example implementation CSV streaming data as worker service
- Host: GitHub
- URL: https://github.com/restuwahyu13/csv-streaming
- Owner: restuwahyu13
- Created: 2024-05-27T19:48:59.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2024-06-01T19:18:13.000Z (about 2 years ago)
- Last Synced: 2025-02-22T20:32:04.271Z (over 1 year ago)
- Topics: api-rest, csv-import, kafka-streams, message-queue, streaming-data, worker-service
- Language: Go
- Homepage:
- Size: 36.1 KB
- Stars: 1
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# CSV Streaming
Berikut adalah tutorial bagaimana cara melakukan processing data tanpa membebani proses dari kinerja api dan jika anda sedang mencari tutorial terkait kafka bisa cek [disini](https://github.com/restuwahyu13/node-kafka), jika anda mebutuhkan sesuatu yang lebih dari yang saya berikan, anda bisa mengcustomisasi nya sesuai dengan kebutuhan anda, untuk data dummy csv filenya anda bisa menggunakannya [disini](https://www.rndgen.com/data-generator).
## User Table
```sql
CREATE EXTENSION "uuid-ossp";
CREATE TABLE public.user (
id uuid primary key default uuid_generate_v4(),
first_name varchar(255) not null,
last_name varchar(255) not null,
email varchar(255) unique not null,
gender varchar (255) null
)
CREATE INDEX user_email ON public.user (email)
```
## Factors Affecting Performance
- Banyaknya jumlah csv data
- Koneksi jaringan internet
- Hardware device
- Database koneksi
- Condingan & SQL Query
- Rebalancing consumer (Kafka)
- Etc
## Tested By Me
Seperti yang saya bilang jika anda upload **1JT** csv data nanti akan dibagi dengan `CHUNK_CSV_SIZE`, contoh jadi **1JT / 100RB** berarti nanti bakal ada **10 Process Batch** yang dimana nanti akan di publish ke `kafka`, anda bisa sesuaikan `CHUNK_CSV_SIZE` dan `GORUTINE_POOL_SIZE` sesuai kebutuhan anda masing - masing, jika dirasa data yang di upload semakin besar anda bisa increase `GORUTINE_POOL_SIZE`, perlu di ingat jangan terlalu besar karena bisa memperlambat dan terlalu banyak menggunakan `cpu`. saya testing `300RB` sampai `500RB` data itu masih terbilang lumayan agak cepat dan low consuming memory walau cpu agak sedikit naik.