freitasmurillo / dynamodb-migration
一个DynamoDB迁移工具
Requires
- aws/aws-sdk-php: 3.*
- symfony/console: ^3.2
Requires (Dev)
This package is not auto-updated.
Last update: 2024-09-24 03:28:40 UTC
README
AWS DynamoDB的PHP迁移工具。
要求
要使用rumble进行迁移和播种,您应该本地安装了AWS DynamoDB或者有特定AWS区域的远程版本的AWS凭证。
披露
与现有的其他迁移工具相比,rumble远未完善。未来将添加更多功能。
命名约定
由于rumble还处于起步阶段,它不能自动生成迁移或播种文件。您必须手动为迁移和播种创建文件。迁移和播种文件应放在项目根目录下的migrations和seeds目录中。
迁移或播种文件必须使用下划线(_)分隔每个单词的文件名。例如:create_app_records_table.php是一个有效迁移或播种文件名。
尽管文件名使用下划线(_)命名风格,但creat_app_records_table.php文件的类名使用Pascal命名风格。即文件名中每个单词的首字母必须大写,例如:CreateAppRecordsTable。
类定义
- 迁移:您创建的每个迁移文件(类)都必须扩展rumble的Migration类,并必须定义一个up方法。
- 播种:您创建的每个播种文件(类)都必须扩展rumble的Seeder类,并必须定义一个seed方法。
使用Rumble
- 迁移:要从项目根目录运行迁移文件,请运行
rumble migrate。例如:vendor/bin/rumble migrate - 播种:要从项目根目录运行播种文件,请运行
rumble seed。例如:vendor/bin/rumble seed
支持DynamoDB功能
目前,rumble仅支持以下DynamoDB功能;
- 创建表
- 更新表
- 删除表
- 添加项
- 批量写入项
教程 - 创建新表
以下代码示例显示了使用rumble创建DynamoDB表所需的最小参数。这是从迁移文件(create_app_records_table.php)的up方法中获取的。up方法是每个创建的迁移文件必须实现的方法。
<?php use Rumble\Migration; class CreateAppRecordsTable extends Migration { public function up() { $table = $this->table('app_records'); //table name $table->addAttribute('app_uid', 'S'); //primary key data type - String(S) $table->addHash('app_uid'); //primary key $table->setWCU(10); //Write Capacity Unit (Provisioned write throughPut) $table->setRCU(10); //Read Capacity Unit (Provisioned read throughPut) $table->create(); //create table } }
教程 - 播种表
以下示例代码显示了播种DynamoDB表(如上所述)所需的最小参数。这是从播种文件(app_records_seeder.php)的seed方法中获取的。seed方法是每个创建的播种文件必须实现的方法。
<?php use Rumble\Seeder; class AppRecordsTableSeeder extends Seeder { public function seed() { $table = $this->table('app_records'); $table->addItem(['app_uid' => 'x435-n956-00jX-u2fX', 'uninstall' => ['reason' => 'Still thinking of one.']]); $table->addItem(['app_uid' => '944-jjU0-o0Hi-y4hh4', 'events' => ['action' => 'click', 'date' => '2017-04-10']]); $table->save(); } }
数据库配置
rumble使用环境变量作为其配置。
这些变量没有默认值,因此您必须设置它们所有。
我将向您展示如何配置rumble以使用本地环境。
AWS_ACCESS_KEY_ID=__YOUR_AWS_ID__
AWS_SECRET_ACCESS_KEY=__YOUR_AWS_SECRET__
AWS_DYNAMO_REGION=us-east-1
AWS_DYNAMO_ENDPOINT=https://:8000/
AWS_DYNAMO_VERSION=latest