考慮其他替代方案
作為開發人員,一定要考慮使用您Adobe Commerce環境以外的工具,例如GraphQL mesh和AdobeApp Builder。 這些工具可協助您保留資料的存取權,但對核心商務應用程式或其基礎資料庫表格沒有影響。 使用此方法,您可以透過API公開您的資料。 接著,將資料來源新增至App Builder設定。 使用GraphQL Mesh,您可以合併這些資料來源,並產生舊資料中提到的單一回應。
如需GraphQL Mesh的其他詳細資料,請參閱GraphQL Mesh閘道。 如需App BuilderAdobe的相關資訊,請參閱App Builder簡介。
修改核心表格或協力廠商表格
如果您決定修改核心Adobe Commerce或協力廠商模組資料庫表格來儲存資料,請使用下列准則來將影響穩定度和效能的情況降至最低。
- 僅新增欄。
- 永遠不要修改現有資料行的 type 值。 例如,請勿將
integer
變更為varchar
以滿足您獨特的使用案例。 - 避免將欄新增至EAV屬性表格。 這些資料表已因邏輯和職責而超載。
- 調整表格之前,請先決定表格的大小。 變更大型表格會影響部署,這可能會導致套用變更時延遲幾分鐘或幾小時。
修改外部資料庫表格的最佳作法
當您將資料行新增至核心資料庫表格或協力廠商表格時,Adobe建議遵循下列步驟:
潛在影響
將欄新增至外部資料庫可能會以下列方式影響您的Adobe Commerce專案:
- 升級可能會更複雜。
- 如果修改的表格很大,則會影響部署。
- 要移轉至新平台可能比較複雜。
避免修改核心表格的方法
您可以使用延伸屬性來避免修改Adobe Commerce資料庫表格。 另一種選擇是使用一些核心資料表上的特殊資料行(additional_data
)來儲存資料,並以JSON編碼格式儲存。
將資料儲存在JSON編碼的資料欄中
某些核心表格有additional_data
欄,其中包含JSON編碼資料。 此欄提供在一個欄位中對應其他資料的原生方式。 使用此方法可避免為小型簡單資料元素新增表格,這些元素儲存資料擷取的資訊,而不需要搜尋。 additional_data
欄通常只適用於料號層次,不適用於整個報價單或訂單。
-
使用
additional_data
欄位的優點- 不需要其他欄位,將欄數維持在最小。 這在銷售流程中很有幫助,因為其中已經涉及許多表格。 最好不要對這個已經複雜的程式增加更多複雜性。 此方法可滿足許多使用案例,但並非全部。
-
缺點
-
此方法僅適用於儲存唯讀資料。 發生此問題是因為我們的程式碼需要取消序列化才能修改和建置物件以新增相依性或資料庫關係。
-
很難使用資料庫作業來搜尋這些欄位。 使用此方法搜尋時速度很慢。
-
將資料儲存在
additional_data
欄中時,必須格外小心,避免觸發序列化或取消序列化作業,這些作業可能會建立無效的JSON來中斷程式碼,或在執行期間造成讀取錯誤。 -
這些欄位必須在程式碼中清楚宣告,讓開發人員可輕鬆找到。
-
其他可能發生且很難診斷的問題。 例如,對於某些原生PHP函式,如果您不使用核心應用程式提供的Adobe Commerce包裝函式方法,則轉換資料的結束結果可能會與預期格式不同。 請一律使用包裝函式,確保儲存或擷取資料的一致性和可預測性。
-
以下是具有additional_data
欄的欄和結構的表格範例。
在2.4.3、2.4.4和2.4.5版中,有10個表格有資料行additional_data
。