torecan / lara-cassandra
Cassandra based query builder for laravel.
Requires
- php: >=8.2
- laravel/framework: ^11.9.2
- mroosz/php-cassandra: ^0.8.1
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.58.1
- phpstan/phpstan: ^1.10.67
README
A Laraval database driver for Cassandra.
Installation
Before installation:
This is project is still on development progress, before add this on your project, please be sure minimum-stability variable is "dev"
"minimum-stability": "dev",
Install using composer:
composer require torecan/lara-cassandra
To support the Laravel database migration feature a custom migration service provider is needed:
- LaraCassandra\CassandraMigrationServiceProvider::class
It must be added at the very top of the service provider list so it can correctly override the default migration service provider.
Configuration
Change your default database connection name in config/database.php:
'default' => env('DB_CONNECTION', 'cassandra'),
And add a new cassandra connection:
'cassandra' => [
'driver' => 'cassandra',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', 8082),
'keyspace' => env('DB_DATABASE', 'cassandra_db'),
'username' => env('DB_USERNAME', ''),
'password' => env('DB_PASSWORD', ''),
'page_size' => env('DB_PAGE_SIZE', 5000),
'consistency' => LaraCassandra\Consistency::LOCAL_ONE,
'timeout' => null,
'connect_timeout' => 5.0,
'request_timeout' => 12.0,
],
.env Examples
DB_CONNECTION=cassandra
DB_HOST=127.0.0.1
DB_PORT=8082
or
DB_CONNECTION=cassandra
DB_HOST=172.198.1.1,172.198.1.2,172.198.1.3
DB_PORT=8082,8082,7748
DB_DATABASE=db_name
DB_USERNAME=torecan
DB_PASSWORD=***
DB_PAGE_SIZE=500
Supported Consistency Settings
- LaraCassandra\Consistency::ALL
- LaraCassandra\Consistency::ANY
- LaraCassandra\Consistency::EACH_QUORUM
- LaraCassandra\Consistency::LOCAL_ONE
- LaraCassandra\Consistency::LOCAL_QUORUM
- LaraCassandra\Consistency::LOCAL_SERIAL
- LaraCassandra\Consistency::ONE
- LaraCassandra\Consistency::TWO
- LaraCassandra\Consistency::THREE
- LaraCassandra\Consistency::QUORUM
- LaraCassandra\Consistency::SERIAL
Schema
Laravel migration features are supported (when LaraCassandra\CassandraMigrationServiceProvider is used):
php artisan migrate
php artisan make:migration createNewTable
Examples
See
Not all features are supported by Cassandra - those will throw exceptions when used.
Additionaly these features are supported by this driver:
- Schemas with Partition Keys and Clustering Columns:
$table->int('bucket')->partition();
$table->int('id')->partition();
$table->int('userid')->partition();
$table->int('join_date')->clustering('DESC');
$table->int('update_date')->clustering('ASC');
$table->int('another_date')->clustering();
// Note: ->primary() is identical with partition()
-
Connection and Builder classes support setting the query consistency via
setConsistency()
, for example:DB::table('example')->setConsistency(Consistency::ALL)->where('id', 1)->get();
-
Builder classes support allow filtering via
allowFiltering()
, for example:DB::table('example')->where('time', '>=', 1)->allowFiltering()->get();
-
By default warnings returned by Cassandra are logged - this can be turned off if needed:
DB::table('example')->ignoreWarnings()->max('id');
Auth
! TODO !