2016-05-05 22 views
13

TL; DR: Có ai đã xây dựng một dịch vụ với golang + protobuf + SQL không? Nếu bạn đã sử dụng thư viện ORM (hoặc ORM), cái nào?Bạn sử dụng ORM nào cho các dịch vụ golang sử dụng protobuf để tuần tự hóa dữ liệu?

Đọc cho bối cảnh nhiều hơn:

Tôi đang xây dựng một dịch vụ trong golang sử dụng protobuf serialize dữ liệu. Vì vậy, tất cả các loại và các cuộc gọi API của tôi được xác định trong tệp .proto và sau đó mã Go được tạo bằng protoc.

Tôi muốn sử dụng ORM để lưu trữ dữ liệu trong MySQL. Tôi google xung quanh và tìm thấy gorm, gorp và một loạt các thư viện khác. Dường như có một số loại thẻ hoặc chú thích trong cấu trúc của bạn là một mẫu chung với các thư viện này.

Ví dụ từ các tài liệu gorp:

type Post struct { 
    // db tag lets you specify the column name if it differs from the struct field 
    Id  int64 `db:"post_id"` 
    Created int64 
    Title string `db:",size:50"`    // Column size set to 50 
    Body string `db:"article_body,size:1024"` // Set both column name and size 
} 

Từ các tài liệu GORM:

type Profile struct { 
    gorm.Model 
    Name string 
} 

type User struct { 
    gorm.Model 
    Profile  Profile `gorm:"ForeignKey:ProfileRefer"` // use ProfileRefer as foreign key 
    ProfileRefer int 
} 

Vì vậy, tôi cố gắng nhìn thấy nếu có một cách để thêm các chú thích để các thông điệp trong các tập tin .proto của tôi, và tìm thấy this github issue nói điều này sẽ không được hỗ trợ.

Vì vậy, tôi đến Stack Overflow để được tư vấn. Chắc chắn có ai đó ở đó bằng cách sử dụng protobufs trong golang với SQL, phải không? Và sử dụng ORM? Vậy bạn đang sử dụng cái nào?

+1

tôi đề nghị bạn sẽ được tốt hơn trong thời gian dài nếu bạn tiếp tục giao thức mạng và mô hình cơ sở dữ liệu riêng biệt. Tôi sử dụng tiết kiệm (về cơ bản giống như protobuf) và SQL để lưu trữ trong một trong các dự án của tôi. Bằng cách giữ chúng riêng biệt, tôi có thể viết giao thức tiết kiệm của mình theo cách nó có lợi cho giao tiếp mạng và giữ cơ sở dữ liệu của tôi theo cách nó có lợi để lưu trữ và truy cập dữ liệu. Tôi có thể thay đổi một cái mà không chạm vào cái kia. Nó có vẻ giống như nhiều công việc hơn nhưng nó sẽ ngăn ngừa những vấn đề nghiêm trọng trong tương lai. – creker

+0

Vì vậy, tôi đã xem xét việc có một bộ cấu trúc riêng biệt để sử dụng trong dịch vụ và sau đó chỉ sử dụng bất kỳ ORM của ol để lưu giữ các đối tượng trong phần cuối SQL của tôi. Nhưng tôi phải duy trì hai bộ đối tượng riêng biệt và giữ chúng đồng bộ. Tôi không muốn làm điều đó. Về mặt logic, các đối tượng tương tự tồn tại trong các thư protobuf của tôi là các đối tượng mà tôi muốn thao tác trong suốt dịch vụ và lưu trữ trong cơ sở dữ liệu. –

+0

Tôi sẽ đề nghị tiết kiệm ... –

Trả lời

Các vấn đề liên quan