torecan/lara-cassandra

基于Cassandra的Laravel查询构建器。

v0.12.0 2024-08-09 12:07 UTC

This package is not auto-updated.

Last update: 2024-09-26 02:41:09 UTC


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 !

该项目是从https://github.com/cubettech/lacassa分叉的