Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

Feature request: support DynamoDB multi-attribute GSI key schemas

Đang mở
#155 1 bình luận 0 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

Đánh giá

Độ khó
5/5
Thời gian dự kiến
Hơn một tuần
Mức phù hợp với người mới
38/100
Loại issue
Tính năng
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Đình trệ
Công nghệ
aws, ruby
Lĩnh vực
databases

Hướng nghiên cứu

Bắt đầu bằng cách đọc secondary_indexes.rb, đường dẫn _si_key_schema và collection định nghĩa thuộc tính được các migration của TableConfig sử dụng. So sánh hành vi hiện tại của hash_key/range_key với tài liệu DynamoDB được liên kết về GSI nhiều thuộc tính, đồng thời lần theo các luồng model và migration hiện có. Được xem là hoàn tất khi một DSL và biểu diễn migration tương thích ngược có thể tạo các schema GSI nhiều thuộc tính mà không chia nhỏ các khai báo giữa các abstraction.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

feature-request
Describe the feature

DynamoDB now supports multi-attribute key schemas for GSIs (up to 4 partition key attributes + 4 sort key attributes).

aws-record currently models GSIs as:

  • one hash_key
  • optional one range_key

Because of this, there is no way to define newer GSI key schemas using Aws::Record DSL or TableConfig migrations.

Use Case

In real single-table designs, we currently pack multiple dimensions into synthetic strings (for example STATUS#timestamp#suffix) only because the DSL is limited to one hash + one range key.

With native multi-attribute GSIs, users can:

  • avoid manual key concatenation/parsing
  • preserve native attribute types
  • express more access patterns with cleaner models
  • reduce app-side key-munging logic
Proposed Solution

Add first-class support for multi-attribute GSI keys while keeping backward compatibility.

Potential API shape:

global_secondary_index :tournament_region,
  hash_keys: %i[tournament_id region],
  range_keys: %i[round bracket match_id],
  projection: { projection_type: 'ALL' }

Backward-compatible behavior:

  • hash_key: -> treated as hash_keys: [hash_key]
  • range_key: -> treated as range_keys: [range_key]

Areas that would need updates:

  • index validation (secondary_indexes.rb)
  • key schema generation (_si_key_schema)
  • attribute definition collection in table config/migration paths
Other Information

Context links:

Observed current limit in aws-record main branch:

  • global_secondary_index expects hash_key/range_key
  • _si_key_schema emits only one HASH + optional one RANGE

Current workaround is using low-level Aws::DynamoDB::Client APIs directly for table/index creation, but then model/table declarations are split between two abstractions.

Acknowledgements
  • I may be able to implement this feature request
  • This feature might incur a breaking change
aws-sdk-ruby-record version used

2.14.0

Environment details (OS name and version, etc.)

Ruby 3.4.8, aws-sdk-dynamodb 1.161.0

Ngôn ngữ chính
Ruby
Star
318
Fork
44
Merge trung bình
2 ngày 21 giờ
Pull request đã merge (30 ngày)
5

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của aws/aws-record-ruby

Tất cả issue của aws/aws-record-ruby

Issue tương tự

Thêm issue về Ruby

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.