12/08/2018, 16:51

Các câu lệnh cơ bản khi QA sử dụng với Dynamodb

Dynamodb có cấu trúc bao gồm các bảng giống như với DB thông thường, tuy nhiên bảng không được sắp xếp theo các cột và dòng mà là tập hợp các item, mỗi item lại là tập hợp của các attribute. Mỗi item được định danh duy nhất bởi một giá trị của khóa chính (primary key). Đầu tiên chúng ta ...

  • Dynamodb có cấu trúc bao gồm các bảng giống như với DB thông thường, tuy nhiên bảng không được sắp xếp theo các cột và dòng mà là tập hợp các item, mỗi item lại là tập hợp của các attribute. Mỗi item được định danh duy nhất bởi một giá trị của khóa chính (primary key).

  • Đầu tiên chúng ta Install DQL với pip:

    pip install dql
    
  • Khi sử dụng Dynamodb chúng ta cần phải cài đặt biến môi trường sau:

    • AWS_ACCESS_KEY_ID
    • AWS_SECRET_ACCESS_KEY
  • DQL sử dụng us-west-1 default region. Nếu bạn có thể thay đổi điều này bằng cách đặt biến AWS_REGION hoặc chuyển nó theo câu lệnh sau:

    $ dql -r us-east-1
    
  • Bạn Vui lòng xem SELECT vì đây là chính xác giống như một câu lệnh SELECT ngoại trừ nó luôn được phép thực hiện quét bảng. Lưu ý rằng điều này có nghĩa là một báo cáo SCAN vẫn có thể thực hiện truy vấn chỉ mục.

  • Example :

    SCAN * FROM users;
    
    
  • Synopsis:

    SELECT
      [ CONSISTENT ]
      attributes
      FROM tablename
      [ KEYS IN primary_keys | WHERE expression ]
      [ USING index ]
      [ LIMIT limit ]
      [ SCAN LIMIT scan_limit ]
      [ ORDER BY field ]
      [ ASC | DESC ]
      [ THROTTLE throughput ]
      [ SAVE filename]
    
  • Example :

    SELECT * FROM foobars SAVE out.p;
    SELECT * FROM foobars WHERE foo = 'bar';
    SELECT count(*) FROM foobars WHERE foo = 'bar';
    SELECT id, TIMESTAMP(updated) FROM foobars KEYS IN 'id1', 'id2';
    SELECT * FROM foobars KEYS IN ('hkey', 'rkey1'), ('hkey', 'rkey2');
    SELECT CONSISTENT * foobars WHERE foo = 'bar' AND baz >= 3;
    SELECT * foobars WHERE foo = 'bar' AND attribute_exists(baz);
    SELECT * foobars WHERE foo = 1 AND NOT (attribute_exists(bar) OR contains(baz, 'qux'));
    SELECT 10 * (foo - bar) FROM foobars WHERE id = 'a' AND ts < 100 USING ts-index;
    SELECT * FROM foobars WHERE foo = 'bar' LIMIT 50 DESC;
    SELECT * FROM foobars THROTTLE (50%, *);
    
  • Parameters:

    • table name : Tên của table
    • limit: Số lượng tối đa của item trả về.
    • scan_limit: Số lượng tối đa các iteam cho DynamoDB để scan (không nhất thiết là số lượng các item phù hợp được trả lại).
    • ORDER BY: Sắp xếp các kết quả theo trường.
    • THROTTLE: Giới hạn số lượng truy vấn mà truy vấn này có thể tiêu thụ, bạn có thể sử dụng flat number hoặc tỷ lệ phần trăm (ví dụ: 20 hoặc 50%). Sử dụng * có nghĩa là không có giới hạn.
  • Synopsis:

    DELETE FROM
     tablename
     [ KEYS IN primary_keys ]
     [ WHERE expression ]
     [ USING index ]
     [ THROTTLE throughput ]
    
  • Example :

    DELETE FROM foobars; -- This will delete all items in the table!
    DELETE FROM foobars WHERE foo != 'bar' AND baz >= 3;
    DELETE FROM foobars KEYS IN 'hkey1', 'hkey2' WHERE attribute_exists(foo);
    DELETE FROM foobars KEYS IN ('hkey1', 'rkey1'), ('hkey2', 'rkey2');
    DELETE FROM foobars WHERE (foo = 'bar' AND baz >= 3) USING baz-index;
    
  • Parameters:

    • table name : Tên của table
    • primary_keys: Danh sách khóa chính của các mục cần xóa
  • Synopsis:

    DROP TABLE
     [ IF EXISTS ]
     tablename
    
  • Example :

    DROP TABLE foobars;
    DROP TABLE IF EXISTS foobars;
    
  • Parameters:

    • table name : Tên của table
    • IF EXISTS: Đừng tạo ra một ngoại lệ nếu bảng không tồn tại.
  • Synopsis:

    UPDATE tablename
      update_expression
      [ KEYS IN primary_keys ]
      [ WHERE expression ]
      [ USING index ]
      [ RETURNS (NONE | ( ALL | UPDATED) (NEW | OLD)) ]
      [ THROTTLE throughput ]
    
  • Example :

    UPDATE foobars SET foo = 'a';
    UPDATE foobars SET foo = 'a', bar = bar + 4 WHERE id = 1 AND foo = 'b';
    
    
  • Parameters:

    • table name : Tên của table
    • RETURNS: Default là RETURNS NONE
    • THROTTLE: Giới hạn số lượng truy vấn mà truy vấn này có thể tiêu thụ, bạn có thể sử dụng flat number hoặc tỷ lệ phần trăm (ví dụ: 20 hoặc 50%). Sử dụng * có nghĩa là không có giới hạn.

Nguồn Tham Khảo:

  • https://www.npmjs.com/package/mysql-dynamo
  • https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/SQLtoNoSQL.html
  • https://dql.readthedocs.io/en/latest/topics/getting_started.html
  • https://www.npmjs.com/package/dynamo-sql
0