laravel-dremio-odbc maintained by avia-avian
Laravel Dremio Driver (ODBC + API)
Integrasi Laravel Database Connection dengan Dremio menggunakan dua mode transport:
- ODBC (Arrow Flight SQL ODBC)
- API (Dremio REST SQL endpoint)
Package ini memudahkan Laravel untuk memilih mode koneksi sesuai kebutuhan deployment.
🚀 Prasyarat
Jika memakai mode ODBC, pastikan sudah menginstal Dremio ODBC Driver di server lokal atau server aplikasi:
📦 Instalasi
Tambahkan package ke project Laravel:
composer require avia-avian/laravel-dremio-odbc
⚙️ Konfigurasi
1. Pilih mode koneksi di .env
Pilih salah satu:
DREMIO_CONNECTION=odbc
atau
DREMIO_CONNECTION=api
2A. Konfigurasi mode ODBC di .env
DREMIO_DRIVER="Arrow Flight SQL ODBC Driver"
DREMIO_HOST=127.0.0.1
DREMIO_PORT=32010
DREMIO_DATABASE=AVIAN
DREMIO_ENCRYPTION=1
DREMIO_DISABLE_CERTIFICATE_VERIFICATION=1
DREMIO_USERNAME=software.engineer
DREMIO_PASSWORD=secret
2B. Konfigurasi mode API di .env
Autentikasi bisa pakai token atau username/password (pilih salah satu):
DREMIO_API_BASE_URL=https://dremio.example.com
# Opsi 1: Pakai Personal Access Token
DREMIO_API_TOKEN=your_personal_access_token
# Opsi 2: Pakai Username & Password (auto-login)
DREMIO_API_USERNAME=software.engineer
DREMIO_API_PASSWORD=secret
DREMIO_API_SQL_ENDPOINT=/api/v3/sql
DREMIO_API_LOGIN_ENDPOINT=/apiv2/login
DREMIO_API_TIMEOUT=30
DREMIO_API_VERIFY_SSL=true
# optional: JSON array context
DREMIO_API_CONTEXT=["mySpace","myFolder"]
3. Tambahkan konfigurasi di config/database.php
'connections' => [
// ... koneksi database lain
'dremio' => [
'driver' => 'dremio',
'connection' => env('DREMIO_CONNECTION', 'odbc'),
// ODBC
'dsn' => env('DREMIO_DRIVER', 'Arrow Flight SQL ODBC Driver'),
'host' => env('DREMIO_HOST', '127.0.0.1'),
'port' => env('DREMIO_PORT', '32010'),
'username' => env('DREMIO_USERNAME'),
'password' => env('DREMIO_PASSWORD'),
'database' => env('DREMIO_DATABASE', 'AVIAN'),
'encryption' => env('DREMIO_ENCRYPTION', 1),
'disable_cert_verification' => env('DREMIO_DISABLE_CERTIFICATE_VERIFICATION', 1),
// API
'api_base_url' => env('DREMIO_API_BASE_URL', ''),
'api_token' => env('DREMIO_API_TOKEN', ''),
'api_username' => env('DREMIO_API_USERNAME', ''),
'api_password' => env('DREMIO_API_PASSWORD', ''),
'api_login_endpoint' => env('DREMIO_API_LOGIN_ENDPOINT', '/apiv2/login'),
'api_sql_endpoint' => env('DREMIO_API_SQL_ENDPOINT', '/api/v3/sql'),
'api_timeout' => env('DREMIO_API_TIMEOUT', 30),
'api_verify_ssl' => env('DREMIO_API_VERIFY_SSL', true),
'api_context' => env('DREMIO_API_CONTEXT', null),
],
],
4. Registrasi Service Provider (Laravel < v11)
Jika menggunakan Laravel 11 ke atas, package auto-discovery akan berjalan otomatis.
Namun untuk Laravel versi lama, tambahkan manual di config/app.php:
'providers' => [
// Provider bawaan Laravel...
App\Providers\AppServiceProvider::class,
// Tambahkan ini:
AviaAvian\DremioOdbc\Providers\OdbcServiceProvider::class,
],
5. Publish Config (opsional)
Jika ingin mengubah konfigurasi default package, jalankan perintah:
php artisan vendor:publish --provider="AviaAvian\DremioOdbc\Providers\OdbcServiceProvider" --tag=config
Ini akan menghasilkan file config/dremio_odbc.php yang bisa kamu sesuaikan sesuai kebutuhan.
🛠️ Contoh Penggunaan
Gunakan connection dremio seperti koneksi database biasa di Laravel:
$results = DB::connection('dremio')
->select('SELECT * FROM Samples."samples.dremio.com"."NYC-taxi-trips" LIMIT 10');
foreach ($results as $row) {
dump($row);
}
❗ Troubleshooting
Error Data source name not found
Pastikan ODBC driver sudah diinstal dengan benar.
Error SSL / Certificate
Atur variabel .env:
DREMIO_ENCRYPTION=1
DREMIO_DISABLE_CERTIFICATE_VERIFICATION=1
Tidak bisa connect ke Dremio
Periksa apakah port 32010 terbuka dan service Dremio aktif.
Error API (Dremio API base URL is required)
Pastikan saat DREMIO_CONNECTION=api, variabel DREMIO_API_BASE_URL sudah diisi.
📖 Dokumentasi Tambahan
📄 License
MIT © Avia-Avian