HiLang 2.1.9
dotnet add package HiLang --version 2.1.9
NuGet\Install-Package HiLang -Version 2.1.9
<PackageReference Include="HiLang" Version="2.1.9" />
paket add HiLang --version 2.1.9
#r "nuget: HiLang, 2.1.9"
// Install HiLang as a Cake Addin #addin nuget:?package=HiLang&version=2.1.9 // Install HiLang as a Cake Tool #tool nuget:?package=HiLang&version=2.1.9
HiLang
HiLang is a minimal high-level language to describe the schema of a domain, taking inspiration from protobuf (.proto models) for hierarchical structures and SQL DML for entities, relations and views.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- FSharp.Core (>= 9.0.201)
- FsLexYacc (>= 11.3.0)
- FsLexYacc.Runtime (>= 11.3.0)
- Microsoft.CodeAnalysis.Analyzers (>= 3.11.0)
- Microsoft.CodeAnalysis.CSharp (>= 4.13.0)
- Nerdbank.GitVersioning (>= 3.7.115)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
2.1.9 | 12 | 3/5/2025 |
2.1.6 | 86 | 2/15/2025 |
2.1.0 | 79 | 1/24/2025 |
2.0.0 | 69 | 1/14/2025 |
1.3.9 | 111 | 11/15/2024 |
1.3.0 | 100 | 10/5/2024 |
1.2.18 | 142 | 9/15/2024 |
1.2.16 | 123 | 9/7/2024 |
1.2.15 | 109 | 9/1/2024 |
1.2.11 | 92 | 8/6/2024 |
1.2.9 | 90 | 7/26/2024 |
1.2.8 | 126 | 7/19/2024 |
1.2.6 | 104 | 7/15/2024 |
1.2.4 | 121 | 7/4/2024 |
1.2.0 | 127 | 5/30/2024 |
1.1.37 | 113 | 5/11/2024 |
1.1.34 | 112 | 4/22/2024 |
1.1.30 | 120 | 3/24/2024 |
1.1.26 | 134 | 3/14/2024 |
1.1.23 | 134 | 2/26/2024 |
1.1.22 | 131 | 2/16/2024 |
1.1.21 | 176 | 1/11/2024 |
1.1.19 | 157 | 1/1/2024 |
1.1.17 | 146 | 12/23/2023 |
1.1.11 | 138 | 12/16/2023 |
1.1.10 | 143 | 12/6/2023 |
1.1.7 | 143 | 11/30/2023 |
1.1.5 | 132 | 11/21/2023 |
1.0.14-prerelease | 155 | 8/6/2023 |
# Overview
This release is primarily concerned with performance when used in a server context the volume if data is huge and accessed via `Hiperspace.DB` and many CPU-cores are available.
Performance is addressed with greater parallelism (graph `Node` and `Edge` queries already execute in parallel) and server-side filtering with using SQL queries.
## Parallelism
`PartitionSpace` and `GenerationSpace` have been updated to search each of the child spaces in parallel and collate results to return to a calling space. For very large hiperspaces `PartitionSpace` enables `Hiperspace.DB` to match the performance of direct/local hiperspaces by executing access in parallel. Hiperspace uses versioning to avoid transaction contention when multiple sessions are accessing a Space, as historical versions of a `GenerationSpace` never ned to be updated they are opened with read-only option, which obviates the need for rockshare to mediate access to the underlying files.
## SQL Queries
Hiperspace is optimized for key or index access to efficiently search hiperspace for elements that match key or key-part criteria.
For the model `entity Customer ( Id : Int64 ) { Name : String, ...};`, a client query `from c in space.Customers where c.Id == 42' is translated into 'space.Customers.Find (new Customer { Id = 42} )` which in turn is translated into `CustomerKeyPath.Get (42)`, which directly fetches the customer from Hiperspace.
For the model
```
entity Customer ( Id : Int64 ) { Name : String, ... [Accounts : Account ].
segment Account ( Id : Int64 ) { Title : String, ...};
```
A query `from as in space.CustomerAccounts where owner.Id == 42' is translated into 'space.CustomerAccounts.Find (new Account { owner = new Customer { Id = 42} })` which in turn is translated into `CustomerAccountKeyPath.Find (42)` retrieving all Accounts that are owned by Customer 42.
For the model
```
entity Customer ( Id : Int64 ) { Name : String, ...} [ Accounts : Account ( Customer = this ) ];
entity Account ( Id : Int64 ) { Title : String, Customer : Customer, ...};
```
A query `from as in space.Accounts where Customer.Id == 42' is translated into 'space.Accounts.Find (new Account { Customer = new Customer { Id = 42} })` which in turn is translated into `AccountCustonerIndex Path.Find (42)` retrieving all Accounts that have a Customer 42, because the Customer extension `Accounts : Account ( Customer = this )` causes an index to be created on Account.
**If** the extension `Accounts : Account ( Customer = this )` is omitted, the Account `SetSpace` is scanned (with a residual condition Customer.KeyType.Id of 42), but if the query is `from as in space.Accounts where Customer.Id < 42' the criteria is evaluated once the results have been returned - potentially a very large set.
### Query
The `Query` function allows 'space.Accounts.Query ("SELECT Account.* FROM Accounts WHERE Accounts.Customer.Id < 42") to be used to send the query to a `Hiperspace.DB` server where the results will be filtered before return to the client.