freitasmurillo/dynamodb-migration

一个DynamoDB迁移工具

v1.0.1-beta 2018-03-06 17:25 UTC

This package is not auto-updated.

Last update: 2024-09-24 03:28:40 UTC


README

Codacy Badge

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