Autoincrement kľúče majú presne takýto formát. Ti A je tam preto, aby to bolo rychlé, ak chceš krajšie id, možeš použiť Identities Working with Document Identifiers. Alebo ako my pouzivame predefinované kľúče, napr cez guid.
O tom som vedel, ze ide predefinovat, no nakoniec som to riesil cez HashId kniznicu, no asi to nie je najlepsie rienie. Skor som myslel, ci na to niesu nejake ine odporucania. Ale hram sa a experimentujem.
Tu asi záleží, ako sa bude s dokumentami pracovať. Attachments sú super na binárne súbory, vyhneš sa komplikácií s konverziou do base64. Ak sú dokumenty textové, tak priamo ukladať znamená, že sa ľahšie vyťahujú údaje z nich.
Ono je to trochu blbe na komunikaciu lebo mame dokument ako textovy dokument a dokument v zmysle databazoveho dokumentu (entity).
Asi trosku opisem architekturu a ako to funguje. Mam web api rozhranie, ktore robi jednoduche operacie (vytvorenie korpusu,…) potom mam worker service, ktory cez subscription pocuva commandy (mam len jednu kolekciu na commandy a v nej polymorfizmom konkretne) a vykonava ich… tj. napriklad extrakcia cisteho textu s PDF-ka, alebo spracovanie tohto textu, ci kontrola plagiatorstva nad celym korpusom.
Dokument (domenovy) vytvorim s attachmentom, ktory obsahuje skutocny dokument (najcastejsie PDF-ko). Pri vytvoreni noveho dokumentu sa ulozi aj dokument aj command, ktory na backende spusti procesovanie tohto PDF-ka, vytiahne text, ten ulozi do domenoveho dokumentu kvoli fulltextu a pokracuje v procesovani.
K tomu celemu mam CLI apku na ovladanie. (Keby k tomu spravim Blazor frontened, tak je uplne cely projekt v C#).
Zatial mam pocit, ze co use-case to dalsi index v RavenDb.
A tiez robim veci inak, ako by som ich robil v produkcii (namiesto Subscripcii by som na background processing pouzil Hangfire).
A teraz nejake otazky:
-
Je nejaky preferovany sposob ako vytiahnut viac dokumentov ako 30? Viem, ze je tam stream, ale ja ich potrebujem vytahovat podla ID. Momentalne si pre kazde vytiahnutie otvorim novu session.
-
Co mi zatial chyba a nenasiel som to je seekable stream na attachment (stacilo by aspon moznost si vytiahnut vysek binarnych dat).
-
Commandy (RavenDB commandy) je moznost ich odoslat v jednej transzakcii v save changed (napriklad vytvorenie domenoveho dokumentu a update korpusu)?