Microsoft-onboarding tárolási referencia
A Microsoft-onboarding a PostgreSQL-t, az S3-kompatibilis objektumtárolót és a keresési vetítést használja. Először végezd el a Graph-beállítást és a tárolási konfigurációt.
Tulajdonosi identitás
A providerMailboxUserId a Microsoft Graph felhasználói azonosító, amelyet a MailboxIdentityResolved eseménynél oldunk fel. Az e-mail-címek változhatnak, ezért nem határozzák meg ezeket az objektumútvonalakat. A Better Auth userId és emailAccountId az alkalmazásbeli tulajdonjogot és az onboarding-útválasztást azonosítja. Nem a szolgáltatói objektum-előtag tulajdonosa.
Objektumkulcsok
users/{providerMailboxUserId}/emails/{emailId}/body.html
users/{providerMailboxUserId}/emails/{emailId}/raw.fts
users/{providerMailboxUserId}/emails/{emailId}/attachments/{emailId}_|_{filename}
Például a GRAPH_USER_ID tulajdonában lévő üzenet ezeket használhatja:
users/GRAPH_USER_ID/emails/MESSAGE_ID/body.html
users/GRAPH_USER_ID/emails/MESSAGE_ID/raw.fts
users/GRAPH_USER_ID/emails/MESSAGE_ID/attachments/MESSAGE_ID_|_invoice.pdf
Az elrendezés tisztítja az útvonal-szegmenseket. A bucket kiválasztása a konfigurációból történik. Az adatbázis-sorok objektumkulcsokat tárolnak, bucket-URL-eket nem.
Törzsek
A worker a metaadatok olvasása közben tölti fel a HTML-t. A body_s3_key rögzíti a kulcsot. Ezen az útvonalon az SQL-üzenettörzs üres marad. A részletes olvasások előnyben részesítik a tárolt kulcsot. A régi email-bodies/ objektumok kompatibilitási visszaesésként megmaradnak.
Nyers FastTransfer-adatok
A Graph exportItems nyers FastTransfer-adatot ad vissza. A worker dekódolja és feldolgozza, majd az eredeti bájtokat raw.fts néven tárolja. A msintegrationv2.newMails.raw_fts_s3_key mutat az objektumra. A msintegrationv2.mailbox_item_exports rögzíti az export állapotát.
Mellékletek
A worker a dekódolt FastTransfer-folyamból kinyeri a fájlokat. Feltölti a bájtjaikat. A msintegrationv2.attachments tárolja az üzenet azonosítóját és a fájlnevet. Tárolja a rendelkezésre álló tartalomtípust és tartalomazonosítót, a méretet, az SHA-256 metaadatot és az objektumkulcsot. A fájlbájtokat nem tárolja abban a metaadat-sorban.
Táblák
| Tábla | Cél |
|---|---|
msintegrationv2.users | Postafiók-felhasználó identitása és alkalmazásmetaadatok |
msintegrationv2.mailboxes | Belső UUID, szolgáltatói identitás, hitelesítő adatok, szinkronizálási állapot, archiválási szabályzat |
msintegrationv2.users_folders | Mappafa és szülő-gyermek kapcsolatok |
msintegrationv2.folder_delta_tokens | Titkosított, átlátszatlan mappa-ellenőrzőpont és állapot |
msintegrationv2.message_delta_tokens | Titkosított, mappánkénti üzenet-ellenőrzőpont és állapot |
msintegrationv2.sync_cycles | Webhook-, periodikus és helyreállítási ciklusok |
msintegrationv2.sync_fetch_batches | Csak olvasó lekérési kötegek és végső delta-jelöltek |
msintegrationv2.sync_stage_items | Tisztított, törzs nélküli elemek idempotens alkalmazáshoz |
msintegrationv2.newMails | Üzenetmetaadatok, törzs- és nyers kulcsok, mellékletállapot és részletek |
msintegrationv2.conversations | Normalizált Graph-beszélgetésazonosító |
msintegrationv2.categories_link | Hiteles beszélgetés-kategória kapcsolatok |
msintegrationv2.attachments | Melléklet-metaadatok és objektumkulcs |
msintegrationv2.mailbox_item_exports | Export-állapot, újrapróbálások, hibaosztály és objektumkulcs |
kafka.sync_operations | Elfogadási, végrehajtási és megerősítési állapot |
kafka.mailbox_execution_state | Postafiókonkénti sorrend és kizárólagos végrehajtói lease |
Inkrementális szinkronizálás
A TypeScript backend a későbbi metaadat- és törzsváltozásokat ugyanazzal a törzskulcs-elrendezéssel kezeli. Az IndependentQueProcessor csak olvasó Graph-lekéréseket és S3-átmeneti tárolást végez. A QueProcessor a változásokat a postafiók-lease alatt alkalmazza, és lezárja az ellenőrzőpontokat. A nyers FastTransfer-export és a melléklet-kinyerés az onboardinghoz vagy a teljes helyreállításhoz tartozik.
Fejlesztési takarítás határa
A kifejezett fejlesztési S3-törlő mind az email-bodies/, mind a users/ útvonalat lefedi. Ez a régi és a jelenlegi fejlesztési objektumokat is törli. Ez romboló karbantartás, nem importelőfeltétel és nem normál helyreállítás. Előbb használd a helyreállítási útmutatót.