Sistema de identificadores de 256 bits para los proyectos de ⋞Galactic-Shrine⋟
GsId es un sistema de identificadores personalizado diseñado para ofrecer una alternativa ampliada a los identificadores clásicos de tipo GUID / UUID.
A diferencia de un GUID estándar basado en 128 bits, GsId se basa en un identificador de 256 bits, representado por 64 caracteres hexadecimales sin guiones.
Actualmente el proyecto ofrece:
- una implementación C# / .NET 8;
- una implementación PHP;
- integración JSON para C#;
- integración Symfony para PHP;
- un tipo Doctrine DBAL para PHP;
- configuración global mediante
GsIdOptions.
Formato compacto sin guiones.
9F2A6C1E8D4B7A90A13F9C2DE88B421091AF77CB4D6E39A2FC018AD92E7B5C64
| Propiedad | Valor |
|---|---|
| Longitud | 64 caracteres |
| Guiones | No |
| Uso recomendado | Base de datos, almacenamiento, indexación |
Formato legible con 5 guiones.
9F2A6C1E8D4B7A90-A13F9C2D-E88B4210-91AF77CB-4D6E39A2-FC018AD92E7B5C64
| Propiedad | Valor |
|---|---|
| Longitud | 69 caracteres |
| Guiones | Sí |
| Patrón | 16-8-8-8-8-16 |
| Uso recomendado | Registros, visualización, APIs legibles |
GsId soporta dos modos de escritura:
| Modo | Descripción |
|---|---|
Upper |
Letras hexadecimales en mayúsculas |
Lower |
Letras hexadecimales en minúsculas |
Ejemplo en mayúsculas:
9F2A6C1E8D4B7A90-A13F9C2D-E88B4210-91AF77CB-4D6E39A2-FC018AD92E7B5C64
Ejemplo en minúsculas:
9f2a6c1e8d4b7a90-a13f9c2d-e88b4210-91af77cb-4d6e39a2-fc018ad92e7b5c64
La configuración central se gestiona con GsIdOptions.
| Opción | Descripción | Valor por defecto |
|---|---|---|
DefaultCase |
Escritura por defecto | Upper |
DefaultTextFormat |
Formato de texto por defecto | D |
DefaultJsonFormat |
Formato JSON por defecto | D |
DefaultDatabaseFormat |
Formato de base de datos por defecto | N |
IsLocked |
Indica si las opciones están bloqueadas | false |
Lock |
Bloquea la configuración | false |
- el almacenamiento interno permanece invariable;
- el análisis acepta tanto mayúsculas como minúsculas;
- las comparaciones no dependen de la escritura mostrada;
ToString()usaDefaultTextFormatyDefaultCase;- la serialización JSON usa
DefaultJsonFormatyDefaultCase; - Doctrine usa
DefaultDatabaseFormatyDefaultCase; - una escritura o formato pasado explícitamente tiene prioridad;
- el bloqueo impide cualquier modificación posterior de las opciones globales.
{
"GsId": {
"DefaultCase": "Lower",
"DefaultTextFormat": "N",
"DefaultJsonFormat": "D",
"DefaultDatabaseFormat": "N",
"Lock": true
}
}Archivo asociado:
csharp/src/GalacticShrine.GsId/GsIdOptionsConfiguration.cs
gsid:
default_case: Lower
default_text_format: N
default_json_format: D
default_database_format: N
lock: trueArchivos asociados:
php/src/GsIdSymfonyOptionsConfigurator.php
php/src/Symfony/GsIdBundle.php
php/src/Symfony/DependencyInjection/Configuration.php
php/src/Symfony/DependencyInjection/GsIdExtension.php
El almacenamiento recomendado es:
CHAR(64)Con el formato:
N
Ejemplo:
9F2A6C1E8D4B7A90A13F9C2DE88B421091AF77CB4D6E39A2FC018AD92E7B5C64
GsId/
├─ .gitignore
├─ LICENSE.md
├─ CHANGELOG.md
├─ README.md
├─ README.en.md
├─ README.es.md
├─ README.it.md
├─ README.jp.md
├─ ARCHITECTURE.md
├─ ARCHITECTURE.en.md
├─ ARCHITECTURE.es.md
├─ ARCHITECTURE.it.md
├─ ARCHITECTURE.jp.md
├─ csharp/
│ ├─ README.md
│ ├─ examples/
│ │ └─ appsettings.gsid.json
│ ├─ src/
│ │ └─ GalacticShrine.GsId/
│ │ ├─ GalacticShrine.GsId.csproj
│ │ ├─ GsId.cs
│ │ ├─ GsIdCase.cs
│ │ ├─ GsIdConstants.cs
│ │ ├─ GsIdException.cs
│ │ ├─ GsIdFormat.cs
│ │ ├─ GsIdGenerator.cs
│ │ ├─ GsIdJsonConverter.cs
│ │ ├─ GsIdOptions.cs
│ │ ├─ GsIdOptionsConfiguration.cs
│ │ ├─ GsIdParser.cs
│ │ └─ GsIdValidator.cs
│ └─ tests/
│ └─ GalacticShrine.GsId.Tests/
│ ├─ GalacticShrine.GsId.Tests.csproj
│ └─ GsIdTests.cs
└─ php/
├─ README.md
├─ composer.json
├─ phpunit.xml
├─ config/
│ ├─ services.gsid.yaml
│ └─ packages/
│ └─ gsid.yaml
├─ src/
│ ├─ GsId.php
│ ├─ GsIdCase.php
│ ├─ GsIdConstants.php
│ ├─ GsIdDoctrineType.php
│ ├─ GsIdException.php
│ ├─ GsIdFormat.php
│ ├─ GsIdGenerator.php
│ ├─ GsIdOptions.php
│ ├─ GsIdParser.php
│ ├─ GsIdSymfonyOptionsConfigurator.php
│ ├─ GsIdSymfonyUidBridge.php
│ ├─ GsIdValidator.php
│ └─ Symfony/
│ ├─ GsIdBundle.php
│ └─ DependencyInjection/
│ ├─ Configuration.php
│ └─ GsIdExtension.php
└─ tests/
└─ GsIdTest.php
| Parte | Estado |
|---|---|
| Compilación C# | Validada |
| Pruebas C# | 14 / 14 |
| PHP Composer | Validado |
| Pruebas PHP | 23 / 23 |
| Aserciones PHP | 46 |
| Configuración Symfony | Preparada |
| Doctrine DBAL | Preparado |
GsId 1.0.0 : validado
C# : validado
PHP : validado
Pruebas : validadas
Docs : estructuradas
GsId ya puede considerarse una base estable de desarrollo para los proyectos de ⋞Galactic-Shrine⋟.