Skip to content

Latest commit

 

History

History
62 lines (40 loc) · 2.22 KB

SequentialGuidProvider.md

File metadata and controls

62 lines (40 loc) · 2.22 KB

SequentialGuidProvider

SequentialGuidProvider provides functionality for server side generation sequential GUID (COMB GUID).

Setup

The basic setup is:

services.AddSequentialGuidProvider();

AddSequentialGuidProvider extension method performs registration of SequentialGuidProvider with specified settings.

Parameter name Parameter type Description
initializer SequentialGuidInitializer Initializer which returns GUID to combine with timestamp. Default value is Guid.NewGuid.
timestampProvider SequentialGuidTimestampProvider Timestamp provider for generating COMB GUID.

Usage

Inject ISequentialGuidProvider service and use it:

public class FileService : ICustomService
{
    private readonly ISequentialGuidProvider _sequentialGuidProvider;

    public FileService(ISequentialGuidProvider _sequentialGuidProvider)
        => _sequentialGuidProvider = _sequentialGuidProvider;

    public void Upload()
    {
        Guid fileId = _sequentialGuidProvider.GetSequentialGuid(SequentialGuidType.String);
    }
}

ITimestampProvider methods list:

Method name Return type Description
GetSequentialGuid Guid Generate new sequential GUID.

GetSequentialGuid method generating sequential GUID with following types:

String

SequentialGuidType.String - The first six bytes are in sequential order, and the remainder is random. Inserting these values into a database that stores GUIDs as strings (such as MySQL) should provide a performance gain over non-sequential values. This type should be used with MySQL or PostgreSQL database.

Binary

SequentialGuidType.Binary - The first two blocks are "jumbled" due to having all their bytes reversed (this is due to the endianness issue discussed earlier). If we were to insert these values into a text field (like they would be under MySQL or PostgreSQL), the performance would not be ideal. This type should be used with Oracle database.

Ending

SequentialGuidType.Ending - The last six bytes are in sequential order, and the rest is random. This type should be used with MS SQL Server database.