Феҳристи схема ва таҳаввулоти маълумот
Чаро ба ман феҳристи схема лозим аст
Феҳристи схема манбаи мутамаркази ҳақиқат барои шартномаҳои додаҳо (API, рӯйдодҳо, риштаҳо, паёмҳо, мағозаҳо) мебошад, ки:- Таҳаввулоти пешгӯишаванда: қоидаҳои мутобиқат ва санҷиши автоматии шикастагӣ.
- Такрор ва шаффофият: таърихи версияҳо, ки/кай/чаро тағир ёфт.
- Стандартизатсия: номҳои ягона, форматҳои хатогӣ, майдонҳои пайгирӣ, тамғакоғазҳои PII.
- Интегратсия бо CI/CD: бастани тағиротҳои пеш аз истеҳсол.
Феҳрист мутобиқати Протокол ва шартномаро бо ҳам мепайвандад ва тағиротро зуд ва бехатар мекунад.
Форматҳо ва барномаҳо
Схемаи JSON: сарбории REST/HTTP, ҳуҷҷатҳо, конфигуратсияҳо.
Avro: автобусҳои ҳодиса (Кафка/Пулсар), паймон/эволютсия тавассути ID саҳроӣ.
Протобуф: GRPC/RPC, барчаспҳои бинарӣ самаранок ва қатъӣ.
Graphl SDL: схемаи типӣ ва директивӣ, эволютсия тавассути '@ deprecated'.
SQL DDL ҳамчун артефакт: мо нуқтаи назари мувофиқашударо ислоҳ мекунем (масалан, дӯконҳои беруна) - бо эҳтиёт.
Усулҳои мутобиқат
БОЗГАШТ: схемаҳои нав маълумот/паёмҳои кӯҳнаро мехонанд. Мувофиқ барои истеҳсолкунандае, ки бори иловагиро дароз мекунад.
ФОРВАРД: истеъмолкунандагони кӯҳна маълумоти навро дуруст мехонанд (хонандаи таҳаммулпазирро талаб мекунад).
ПУРРА: ҳарду (сахттар, барои шартномаҳои ҷамъиятӣ қулайтар).
ҲЕҶ: чек нест - танҳо барои қуттиҳои қуттӣ.
- Ҳодисаҳо: аксар вақт BACKWARD (истеҳсолкунанда бори ихтиёриро дароз мекунад).
- API-ҳои ҷамъиятӣ: ПУРРА ё қафо + хонандаи қатъии таҳаммулпазир ба мизоҷон.
- Прототипҳои дохилӣ: муваққатан NONE, аммо на дар танаи.
Тағйироти бехатар (иловашуда) ва хатарнок
Иловаи (Хуб):- Илова кардани майдон/намуди иловагӣ.
- Тамдиди enum бо арзишҳои нав (бо хонандаи таҳаммулпазир).
- Илова кардани проексияи/чорабинии алтернативӣ ('.enriched').
- Маҳдудиятҳои сабуккунанда ('min' дарозӣ ',' ҳадди аксар '), аммо на ↓).
- Майдонҳоро нест кунед/иваз кунед ё намуди/ҳатмии онҳоро иваз кунед.
- Тағйир додани семантикаи статусҳо/кодекҳо/тартибот дар риштаҳо.
- Истифодаи дубораи барчаспҳои протобуф.
- Тағир додани калиди тақсимот дар рӯйдодҳо.
Ташкилоти бақайдгирӣ
Номгузорӣ ва суроға
Гурӯҳҳо/ҷойҳо: 'пардохтҳо', 'kyc', 'аудит'.
Номҳо: 'пардохт. ваколатдор шудааст. v1 '(рӯйдодҳо),' пардохтҳо. v1. Capture/Request '(GRPC),' фармоишҳо. v1. Фармоиш '(JSON Schema).
Номи асосӣ, ноболиғон дар версияи метамаълумот/схема.
Метадата
'соҳиб' (фармон), 'домейн', 'slas' (SLO/SLA), 'амният. сатҳ '(PII/PCI),' нигоҳдорӣ ',' мутобиқати _ режим ',' ғуруби офтоб ',' changelog '.
Идоракунии даврӣ
Лоиҳаи → Шарҳи → Тасдиқшуда → Озод карда шудааст → Беоб мондан → Ғуруби офтоб.
Валидаторҳо/линтерҳои худкор, баррасии дастӣ (API Guild), қайдҳо.
Интегратсия ба CI/CD
1. Пеш аз содир: линтерҳои маҳаллӣ (асбобҳои Spectral/Buf/Avro).
2. PR-қубур: санҷиши режими мутобиқати схема-diff →; бастани шикастан.
3. Нашри Artifact: схемаи пайдарпайро ба сабти ном + тавлид кардани SDK/моделҳо тела диҳед.
4. Муҳофизи вақти корӣ (ихтиёрӣ): Gateway/истеҳсолкунанда сарбориро аз нақшаи ҷорӣ тасдиқ мекунад.
- 'openapi-diff ---fail-on-break'
- 'buf шикастан --against
' - 'avro-compat ---mode BACKWARDЖапос
- тавлиди намунаҳои тиллоӣ ва озмоишҳои CDC.
Эволютсияи схемаҳо: амалия
Илова-аввал: новые поля - 'ихтиёрӣ/беэътибор' (JSON), 'ихтиёрӣ' (proto3), пешфарз в Авро.
Модели пирамидаи баръакс: ядро устувор аст, ғанисозӣ наздик ва ихтиёрӣ аст.
Дучанд-эмит/дугона-навиштан барои асосӣ: мо мувозӣ 'v1' ва 'v2' -ро нашр мекунем.
Нақшаи ғуруби офтоб: сана, истифода, огоҳӣ, адаптерҳо.
Хонандаи таҳаммулпазир: мизоҷон майдонҳои номаълумро нодида мегиранд ва энумҳои навро дуруст идора мекунанд.
Намунаҳои схемаҳо ва чекҳо
Schema JSON (порча, майдони иловагӣ)
json
{
"$id": "orders.v1.Order",
"type": "object",
"required": ["id", "status"],
"properties": {
"id": { "type": "string", "format": "uuid" },
"status": { "type": "string", "enum": ["created", "paid", "shipped"] },
"risk_score": { "type": "number", "minimum": 0, "maximum": 1 }
},
"additionalProperties": true
}
Avro (пешфарз барои мутобиқат)
json
{
"type": "record",
"name": "PaymentAuthorized",
"namespace": "payment.v1",
"fields": [
{ "name": "payment_id", "type": "string" },
{ "name": "amount", "type": "long" },
{ "name": "currency", "type": "string" },
{ "name": "risk_score", "type": ["null", "double"], "default": null }
]
}
Протобуф (барчаспҳоро дубора истифода набаред)
proto syntax = "proto3";
package payments.v1;
message CaptureRequest {
string payment_id = 1;
int64 amount = 2;
string currency = 3;
optional double risk_score = 4; // additive
}
// tag=4 зарезервирован под risk_score, его нельзя менять/удалять без v2
Феҳристи рӯйдодҳо ва тақсимот
Номи рӯйдодҳо: 'домен. амал. v {major} '(' пардохт. асир гирифта шудааст. v1 ').
Калиди тақсимкунӣ як қисми шартнома аст ('pay _ id', 'user _ id').
Core против ғанишуда: '.v1' (аслӣ) ва '.enriched. v1 '(тафсилот).
Мутобиқати феҳрист: режимҳо дар сатҳи мавзӯъ/намуд; CI тағироти номувофиқро рад мекунад.
Идоракунии муҳоҷират
Тавсеаи → Migrate → Шартнома (REST/G RPC):1. Илова кардани майдонҳо/ҷадвалҳо 2) оғози навиштан/хондани майдонҳои нав; 3) баъди ғуруби офтоб пир шудан.
- Dual-emit (Ҳодисаҳо): мувозӣ ба 'v1 '/' v2', муҳоҷирати истеъмолкунанда/проексия, пас хориҷ кардани 'v1'.
- Бозсозӣ: аз нав ҷамъ кардани пешгӯиҳо аз журнал ба диаграммаи нав (танҳо бо мутобиқат ва муҳоҷирон).
- Адаптерҳо: дарвозаҳо/проксиҳо, ки барои муштариёни мураккаб 'v1↔v2' тарҷума мекунанд.
Бехатарӣ ва мувофиқат
Нишонаҳои PII/PCI дар диаграмма: 'x-pii: ҳақиқӣ', 'ҳассосияти x: баланд'.
Сиёсати дастрасӣ: кӣ метавонад схемаҳоро (RBAC) нашр/тағир диҳад, варақаҳоро имзо кунад.
Криптография: имзои версияҳои схема, гузоришҳои аудити тағйирнопазир (WORM).
Ҳуқуқи фаромӯш кардан: майдонҳоеро муайян кунед, ки рамзгузорӣ/нест кардани крипторо талаб мекунанд; роҳнамо дар феҳрист.
Мушоҳида ва аудит
Панели панелҳо: шумораи тағирот, намудҳо (хурд/асосӣ), ҳиссаи PR-ҳои радшуда, истифодаи версияҳо.
Роҳи аудит: кӣ схемаро иваз кард, пайвандҳо ба PR/ADR, нашри марбут.
Андозагирии вақти корӣ: фоизи паёмҳое, ки тасдиқи ноком доранд; ҳодисаҳои мутобиқат.
Асбобҳо (анбори намуна)
Схемаи кушодаи API/JSON: Спектрал, OpEN API Diff, Схема.
Протобуф/GRPC: Buf, buf-break, binters.
Avro/Чорабиниҳо: Феҳристи схемаи омехта/Редпанда, авро-асбобҳо, Карапас.
Диаграммаи QL: Инспектори Graph
Регистрҳо/каталогҳо: Феҳристи Artifact, Феҳристи асоси Git, Каталоги Backstage, UI одатӣ.
Ҳуҷҷатгузорӣ: Redocly/Stoplight, Swagger-UI, GraphiQL.
Анти-намунаҳо
Swagger-шустан: нақша воқеияти хидматро инъикос намекунад (ё баръакс).
Тафтиши мутобиқати маъюбон: "фаврӣ" → танаффуси маҳсулот.
Истифодаи такрории барчаспҳои протобуф: коррупсияи маълумоти хомӯш.
Реҷаи ягонаи мутобиқати "барои ҳама чиз": доменҳои гуногун режимҳои гуногунро талаб мекунанд.
CDC-ҳои хом ҳамчун схемаҳои ҷамъиятӣ: ихроҷи модели DB, имконнопазирии эволютсия.
Рӯйхати санҷиши амалисозӣ
- Формати муайяншудаи артефакт ва реҷаи мутобиқат аз рӯи домен.
- Линтерҳо ва схемаҳои фарқкунанда дар CI танзим карда мешаванд, PR ҳангоми шикастан баста мешавад.
- Барои хонандаи таҳаммулпазири мизоҷон фаъол аст; 'additional' Хусусиятҳо = ҳақиқӣ '(агар лозим бошад).
- Тағироти асосӣ тавассути RFC/ADR мегузаранд, нақшаи ғуруби офтоб ва дугона-эмит/дугона навишта шудааст.
- Схемаҳо бо PII/PCI ва сатҳи дастрасӣ қайд карда шудаанд; аудит фаъол аст.
- Истифодаи версия ва мутобиқат панели панелро вайрон мекунад.
- Тавлиди SDK/моделҳо аз феҳрист як қисми лӯла мебошад.
- Ҳуҷҷатгузорӣ ва намунаҳои тиллоӣ ба таври худкор нав карда мешаванд.
FAQ
Оё бе феҳрист нигоҳ доштани схемаҳо дар Git имконпазир аст?
Бале, аммо феҳрист мутобиқати API, ҷустуҷӯ, метамаълумот, сиёсати мутамарказ ва санҷиши парвозро илова мекунад. Беҳтарин вариант Git ҳамчун нигаҳдорӣ + UI/сиёсатҳо дар боло аст.
Чӣ гуна ман режими мутобиқатро интихоб мекунам?
Ба самти тағирот нигаред: агар истеҳсолкунанда бори худро васеъ кунад - БОЗГАШТ. Барои оммавии API/SDK - FULL. Барои прототипҳои зуд - муваққатан ҲЕҶ (на дар танаи).
Агар шикастани зарурӣ чӣ кор кунад?
Омодасозии v2: дугона-эмит/дугона, санаҳои ғуруби офтоб, адаптерҳо, телеметрияи истифода, дастурҳои муҳоҷират.
Оё ба ман лозим аст, ки бори кориро дар вақти корӣ тасдиқ кунам?
Барои соҳаҳои муҳим, бале: ин паёмҳои номатлубро пешгирӣ мекунад ва ташхисро суръат мебахшад.
Натиҷа
Феҳристи схема таҳаввулоти маълумотро аз импровизатсияи хатарнок ба раванди идорашаванда табдил медиҳад: қоидаҳои ягонаи ҳамоҳангсозӣ, тасдиқи худкор, версияҳои фаҳмо ва таърихи шаффоф. Ба он интизоми хонандаи иловагӣ, таҳаммулпазир, дуҷониба ва ғуруби офтоб илова кунед - ва шартномаҳои шумо бидуни вайроншавӣ ва ҳодисаҳои шабона зуд рушд хоҳанд кард.