データベースを操作する場合、1 対多および多対多のリレーションシップが発生するのが一般的です。このようなシナリオでは、これらの関係を Go 構造体に効率的かつスケーラブルにマッピングすることが重要です。
効果的なアプローチの 1 つは、 PostgreSQL の配列アグリゲータと GROUP BY 機能。これには、配列集約を使用してアイテムとその関連データをグループ化するビューの作成が含まれます。その後、配列の内容を Go struct.
SELECT tag.name, tag.id FROM tag WHERE item_id = item.id
) AS タグリスト
GROUP BY
item.id
`
db.MustExec(sql)
Go コードは次のようになります:
return err
}
if err := json.Unmarshal([]byte(jsonString), &item); err != nil {
return err
}
items = append(items, item)
}
このアプローチは、PostgreSQL の柔軟性と配列集約および行レベルの効率性を組み合わせています。 Goでマーシャリング。複雑な関係であっても、シームレスに拡張できます。
推奨されるアプローチは効率的で汎用性がありますが、質問で言及されている代替ソリューションには独自の長所と短所があります。 :
最終的に、最良のアプローチは、アプリケーションの特定の要件と利用可能なテクノロジーによって異なります。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3