torecan / lara-cassandra
基于Cassandra的Laravel查询构建器。
v0.12.0
2024-08-09 12:07 UTC
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
Laravel的Cassandra数据库驱动。
安装
安装前
该项目仍在开发中,在将其添加到项目中之前,请确保minimum-stability变量为"dev"。
"minimum-stability": "dev",
使用composer安装
composer require torecan/lara-cassandra
为了支持Laravel数据库迁移功能,需要一个自定义迁移服务提供者
- LaraCassandra\CassandraMigrationServiceProvider::class
它必须添加到服务提供者列表的顶部,以便正确覆盖默认迁移服务提供者。
配置
更改config/database.php中的默认数据库连接名称
'default' => env('DB_CONNECTION', 'cassandra'),
并添加一个新的cassandra连接
'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 示例
DB_CONNECTION=cassandra
DB_HOST=127.0.0.1
DB_PORT=8082
或
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
支持的致性设置
- 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
模式
Laravel迁移功能得到支持(当使用LaraCassandra\CassandraMigrationServiceProvider时)
php artisan migrate
php artisan make:migration createNewTable
示例
参见
并非所有功能都由Cassandra支持 - 使用时将抛出异常。
此外,此驱动程序还支持以下功能
- 具有分区键和聚类列的模式
$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()
-
连接和构建类支持通过
setConsistency()
设置查询一致性,例如DB::table('example')->setConsistency(Consistency::ALL)->where('id', 1)->get();
-
构建类支持通过
allowFiltering()
允许过滤,例如DB::table('example')->where('time', '>=', 1)->allowFiltering()->get();
-
默认情况下,Cassandra返回的警告将被记录,如果需要可以关闭
DB::table('example')->ignoreWarnings()->max('id');
身份验证
! TODO !