Microsoft Bondには、スキーマが時間とともに進化する方法に関するいくつかのベストプラクティスがありますか?私たちは2ウェイの互換性を持っているようにベストプラクティスに従うようにしたいと思います。つまり、Bondタイプで古いバージョンから現在のバージョンに進化させることができます。また、新しいバージョンから古いバージョンへの変換を可能にする下位互換性もあります。 Avroなどの他のシリアライゼーションフレームワークでは、ドキュメントに明示的に詳細が記載されていますが、ドキュメントで具体的に扱われているとは思いません(例:https://microsoft.github.io/bond/manual/bond_cs.htmlでもhttps://microsoft.github.io/bond/manual/compiler.html#idl-syntax)。Microsoft Bondスキーマの進化のベストプラクティス
私たちは.NET(C#/ F#)で書いており、最初にCompactBinaryWriterとCompactBinaryReaderの書式を使用する予定です。
は例えば、私はこれらの線に沿っていくつかのガイダンスを想像:フィールド序は、名前ではなく、直接(のsimplejsonを除く)フィールドの解決のために使用されているので、フィールドの
- 名前は時間の経過とともに変化することができます。私はこれが本当だと信じていますか?新しいフィールドでは、新しいバージョンのフィールドを削除するフィールドをデフォルト値
- を与える必要があり、「必要」を追加
- は大丈夫です、提供古いバージョンでは、フィールドの種類の変更について
- 何を割り当てられたデフォルト値を持っていました?たとえば、バージョン1の文字列フィールドからバージョン2のint64にフィールドを変更できますか?文字列からカスタムユニオン(オプションのフィールドを持つカスタムタイプ)に変更できますか?
- その他の推奨事項はありますか?
ありがとうございました!
はまた、任意のアクティブなフォーラムのコミュニティは、マイクロソフトボンドの質問のこのタイプのためにそこにある場合、私はどちらかの明示的なスキーマ展開のガイドラインを認識していないです...
ありがとうございます!これは大きな助けとなる – user1521026
フォローアップとして、カスタム構造体の名前変更に関する推奨事項はありますか?私は、スキーマの進化に関して文書で取り上げられていることは見ていない。私はMicrosoft Bond Repoに関する質問をhttps://github.com/Microsoft/bond/issues/595で作成しました。 – user1521026