Nikoh ha scritto: ↑08/01/2024, 12:55
@motoschifo @Gothrek inserire un id univoco persistente è ovviamente l'unica strada, come infatti ha fatto il team di no-intro; loro forniscono anche un dat compatibile/simile a quello mame ma il loro dat standard prevede un id, ed anche il campo cloneof di mame lo hanno modificato in cloneofid.
Anyway, prima di tutto occorre realizzare uno scanner che più o meno riesca ad "acchiappare" i dati almeno dagli ultimi formati mame, finalburn, no-intro e redump credo, dopodiché si formatteranno i dati in un nuovo standard che vorrei chiamare unidat e per il quale vorrei usare il formato json.
@motoschifo potremmo prevedere una sorta di integrazione tra i dati in tuo possesso ed il mio software ad esempio per avere una corretta gestione di lingue e region tramite hash senza dover ricorrere al nomefile?
Confermo che la strada dell'id univoco è l'unica percorribile, anche io internamente al mio db ne ho uno ma non ha significato se non essere univoco all'interno della tabella.
Tempo fa avevo iniziato a considerare di farlo anche io, ma purtroppo le cose sono troppo complesse al momento per poterlo implementare.
Infatti sul sito esistono tutte le versioni, ogni cambiamento in avanti non ha la possibilità di tornare indietro in caso di errori. Ed è questo il vero problema.
Vuol dire che prima di un eventuale aggiornamento alla nuova release, si dovrebbe prima di tutto condurre un'indagine su TUTTI i giochi per capire se sono stati cambiati, poi successivamente al termine (giorni dopo) iniziare l'aggiornamento del sito e assegnare nuovi id (tutte le risorse collegate al vecchio id non sarebbero più visibili sul nuovo id).
Dato che sono operazioni a senso unico, in caso di errori si avrebbero ripercussioni enormi sul resto dei dati e il database perderebbe integrità.
Per es. se un gioco è diverso ma non è stato portato ad un nuovo id, a quel punto la separazione andrebbe fatta manualmente e coinvolgerebbe molti collegamenti (oltre ad essere un lavoro delicatissimo).
Non escludo di farlo in futuro, oggi però non riesco.
Vedo invece più pratico assegnare quell'id al gioco, così da riconoscerlo (come il gamebase-id), o trasformare questo id in romset+release (es. mslug.261).
Altra cosa da considerare: tutto ciò che è fuori da questi ragionamenti, non ragiona per versione quindi per loro esiste mslug (ed è per quel motivo che la chiave primaria non va mai cambiata, specialmente se poi la comunichi all'esterno).