Skip to main content

Mise à jour de Dynamic Book en version 4

1) Réécriture du code source en C#

Suite à l'insatisfaction concernant le système de licence de « Rem Objects », nous avons entièrement réécrit le code en C#12. Cette nouvelle approche nous permet de ne plus être dépendants d'une plateforme spécifique pour le développement, que ce soit sur Windows ou Mac. De plus, le projet peut désormais être compilé et débogué sur Rocky Linux.

2) Mise à jour vers .NET 8.0

Le projet « Dynamic Book » a été mis à jour vers la version LTS .NET 8. Cette mise à jour apporte des améliorations significatives, notamment dans la gestion des « records », des tableaux en ligne (InlineArray) et des performances globales.

3) Mise à jour de FirebirdSQL vers 5.0

Nous avons recompilé FirebirdSQL à partir des sources GitHub pour passer à la version LI-V5.0.2.1497 Firebird 5.0, ODS 13.1. Cette mise à jour inclut également les sources de Lucene++ et de Lucene_UDR.

4) Formatage des données en UTF-8

La structure de données par défaut de FirebirdSQL, utilisant une collation iso8859, convient bien aux documents en français ou en anglais. Cependant, pour d'autres langues, la gestion devenait plus complexe. Nous avons donc opté pour une collation par défaut à None, avec des champs contenant du texte formaté en UTF-8 sans collation par défaut.

5) Intégration de documents en russe

Pour valider notre choix d'adopter une structure en UTF-8, nous avons intégré quatre documents en russe, bien que nous ne comprenions pas leur contenu. Voici les documents ajoutés :

Cette intégration a permis de tester la viabilité de la structure UTF-8 pour gérer des contenus dans différentes langues, et les résultats se sont révélés fonctionnels, confirmant ainsi l'efficacité de ce choix technique.

6) Performances améliorées 😊

Nous avons migré vers un serveur Hetzner situé dans les locaux d'Helsinki (sous l'éolienne). Avec 12 cœurs et un RAID1 SSD, Nginx renvoie le dernier octet d'une page en moyenne en 7 ms (minimum 2 ms, maximum 10 ms), tandis que l'UDR de recherche répond en seulement 2 ms.

C’est un développement initié par TetraSys Oy avec l’objectif de développer une nouvelle solution organisée autour de Blazor, Oxygène (Rem Objects), FirebirdSQL & Lucene_UDR en traduisant l’excellent travail de « Denis Simonov » titré «  guide du langage FirebirdSQL 5.0 Alpha » au format AsciiDoc que nous avons commencé à traduire en français.

Le travail de Denis Simonov et tous les autres contributeurs est impressionnant, plus de 900 pages techniques que nous avons découpés en section par sujet visible par exemples les tables systèmes comme un gros pense bête :-) , comme vous pouvez le constater ci dessous
 

Exemple https://fb5doc.tetrasys.fi/datatypes-datetime

Le développement est articulé sur base d’un serveur Rocky Linux version 9 au format VM 2 corps permettant la compilation des sources de FirebirdSQL 5 initial, de LuceneC++ ainsi que le projet Lucene_UDR. Ce choix permet de rester le plus léger possible au niveau des ressources serveur et du transport en HTTP3/Quic via NGINX (également compilé pour ce faire).

Le choix de travailler avec la techno fournie par Blazor serveur complète l’ensemble, permettant de réduire le transport des données au plus strict minimum via WebSocket en UDP.

Ce développement est parti sur le principe de trouver le meilleur l’équilibre entre les ressources/vitesse/résultat possible avec le matériel suivant :

OS: Rocky Linux 9.0 (Blue Onyx) x86_64

Host: KVM/QEMU (Standard PC (i440FX + PIIX, 1996) pc-i440fx-5.2)

Kernel: 5.14.0-70.22.1.el9_0.x86_64

CPU: AMD EPYC 7282 (4) @ 2.794GHz

Memory: 426MiB / 7684MiB

FirebirdSQL Server Version: LI-T5.0.0.681 Firebird 5.0 Initial

.NET SDK Version: 6.0.108 Commit: 4e3a463d2b

RemObjects Oxygene : 11.0.0.2763

Microsoft Visual Studio Community 2022 (64-bit) – Preview Version 17.4.0 1.0

La seul contrainte observée sur tout le processus est de minimisé l’empreinte de l’application au maximum et de bannir toute librairie, souvent inutile, a charger par page ou en cache client.

L’application, avec son système d’exploitation n’occupe que 460M et 4 à 6% des corps processeur en charge.

Le temps de réponse d’une page moyenne est de 420ms pour 29kb de données

Le temps moyen d’une réponse à une recherche avec Lucene_UDR est de 4 à 10 millièmes de seconde