IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
logo

FAQ FirebirdConsultez toutes les FAQ

Nombre d'auteurs : 6, nombre de questions : 205, dernière mise à jour : 15 septembre 2014  Ajouter une question

 

Cette faq a été réalisée à partir des questions fréquement posées sur les forums Firebird de http://www.developpez.com et de l'expérience personnelle des auteurs.

Nous tenons à souligner que cette F.A.Q. ne garantit en aucun cas que les informations qu'elle propose soient correctes. Les auteurs font le maximum, mais l'erreur est humaine. Cette F.A.Q. ne prétend pas non plus être complète. Si vous trouvez une erreur, ou que vous souhaitez devenir rédacteur, lisez ceci

Sur ce, nous vous souhaitons une bonne lecture.
L'équipe Firebird de Developpez.com

SommaireBien débuter (9)
précédent sommaire suivant
 

Vous atteindrez certainement les limites du système de fichier avant celle de Firebird.

Voici quelles sont les limitations de ces systèmes de fichiers:

Windows:
FAT12: 32Mo
FAT16: 2Go (Windows NT3 ou plus récent)
FAT32: 2Go
FAT32: 4Go (Windows NT5 ou plus récent)
NTFS: 4Go
NTFS: 16Eio (Windows NT5 ou plus récent)

Linux:
EXT2/EXT3: 2To (avec 4Ko de blocksize)
EXT2/EXT3: 64To (avec 8Ko de blocksize)
ReiserFS 3.6: 1Eio
XFS: 8Eio
JFS: 8Eio (avec 512 octets de blocksize)
JFS: 8Eio (avec 4Ko de blocksize)

Même si vous atteignez une de ces limites, Firebird supporte les bases multi-fichiers.

Nota: Eio = exbioctet = 2^60.

Traduction réalisée depuis http://www.firebirdfaq.org/faq59/

Mis à jour le 10 mars 2009 Cl@udius

Les voici:

Taille maximum de la base de données: aucune limitation avec Firebird 2 (en utilisant les fichiers multiples), 32To avec FB 1.x.
Taille maximum d'un fichier: 16To ou plus, dépendant du système de fichiers utilisé.

Nombre maximum de tables: 32K Tables
Taille maximum d'une table: 32To (~30Go pour Firebird 1.x)
Nombre maximum de champs par table: 16G (4G avec Firebird 1.x)

Les limites du système de fichiers s'appliquent à chacune de ces valeurs.

Taille maximum d'un enregistrement: 64K
Nombre maximum de champs par table: Dépend des types de données utilisés. (Exemple: 16384 INTEGER (4 octets) par enregistrement). Les blobs stockent uniquement un BLOB_ID et les données sont stockées séparément.

Nombre maximum d'index par tables: environ 850 index
Nombre maximum d'index par base de données: 4G index
Le nombre d'index dépend de la taille de la page et du type de données utilisés.

Type de données:

Char et Varchar: 32767 octets
Smallint: 16 bits
Integer: 32 bits
BigInt: 64 bits
Float: 32 bits, 3,4x10^-38 à 3.4x10^38, précision 7 chiffres
Double: 64 bits, 1,7x10^-308 à 1,7x10^308, précision 15 chiffres
Timestamp: 64 bits, 1 Jan 100 au 28 Fév 32768
Date: 32 bits, 1 Jan 100 au 29 Fév 32786
Time: 32 bits, 00:00 à 23:59.9999
Blob: 32Go

Les types Numeric et Decimal sont stockés en interne sous forme de smallint, integer ou bigint selon la taille.
Ils peuvent supporter jusqu'à 18 chiffres.

Traduction réalisée depuis http://www.firebirdfaq.org/faq61/

Mis à jour le 10 mars 2009 Cl@udius

Les dialectes SQL ont été utilisés pour la migration entre Interbase 5 et Firebird 1. Le dialecte 1 permet aux applications de communiquer avec Firebird comme si il s'agissait d'Interbase 5, le dialecte 2 a été utilisé de façon transitoire et le dialecte 3 supporte toutes les nouvelles fonctionnalités.

Si vous créez de nouvelles applications vous devriez utiliser le dialecte 3 pour toutes vos bases de données.

Traduction réalisée depuis http://www.firebirdfaq.org/faq24/

Mis à jour le 10 mars 2009 Cl@udius

Il n'existe pas nativement de champ de type booléen, mais vous disposez de quelques alternatives.

  • utiliser un char(1)
  • utiliser un smallint
  • utiliser un domaine

Les domaines sont probablement la meilleure solution. Vous pouvez les créer ainsi:

Code sql : Sélectionner tout
1
2
3
CREATE DOMAIN BOOLEAN 
AS SMALLINT 
CHECK (value is null or value in (0, 1));
Ensuite dans la définition de la table vous pouvez vous y référer comme un type de données standard.

Code sql : Sélectionner tout
1
2
3
4
5
6
7
CREATE TABLE t1 
( 
C1 VARCHAR(10), 
B1 BOOLEAN, 
B2 BOOLEAN NOT NULL, 
... 
);
Si vous utilisez une librairie de connexion comme OleDB sous .Net, vous pouvez surcharger la méthode GetSchema du provider OleDB ainsi les données obtenues depuis vos requêtes seront booléennes de façon native.

Traduction réalisée depuis http://www.firebirdfaq.org/faq12/

Mis à jour le 10 mars 2009 Cl@udius

L'Architecture Multi-Générationelle (en anglais MGA: Multi Generational Architecture) est une fonctionnalité utilisée par les SGBD modernes. Cela signifie que les multiples versions des enregistrements sont conservées dans la base de données aussi longtemps qu'elles sont nécessaires à au moins une transaction.

Chaque transaction active possède à tout moment sa propre vue cohérente des données de la base, car les enregistrements dont elle a besoin ne sont pas effacés ni modifiés même si une autre transaction les supprime ou modifie. Cela permet le fameux "readers don't block writers and writers don't block readers".

Cette architecture s'assure que des opérations de type OLTP et OLAP peuvent se produire simultanément sans nécessité de verrouillage dans le fonctionnement du SGBD.

Traduction réalisée depuis http://www.firebirdfaq.org/faq44/

Mis à jour le 10 mars 2009 Cl@udius

BLR signifie Binary Langage Representation. Toutes les requêtes SQL sont traduites du SQL en BLR avant l'exécution. Lorsque vous créez ou modifiez une procédure stockée, un déclencheur, une vue ou un champ calculé, Firebird compile le code source et le stocke sous sa forme compilée dans les tables systèmes. Il stocke également le code SQL original que vous manipulez, mais en réalité il n'est jamais utilisé.
Ensuite lorsque une procédure stockée est exécutée, Firebird exécute simplement le code binaire sans avoir besoin de le recompiler.
Disposer ainsi des BLR réduit également la dépendance entres les objets de la base de données. Imaginez ces 2 tables:

Code sql : Sélectionner tout
1
2
CREATE TABLE t1 ( a integer, b integer ); 
CREATE TABLE t2 ( c integer );
et la requête suivante dans une procédure stockée:

Code sql : Sélectionner tout
1
2
3
SELECT a, b 
FROM t1 
JOIN t2 ON t1.a = t2.c;
Plus tard vous pouvez facilement ajouter une colonne nommée B à la table T2 et la procédure stockée continuera de fonctionner correctement même si la requête en elle-même déclencherait une erreur:

Code text : Sélectionner tout
1
2
Ambiguous field name between table T1 and table T2<br/> 
B
La procédure stockée continue de fonctionner car le SQL n'est plus interprété et la BLR contient bien une référence du champ B de la table T1.

Traduction réalisée depuis http://www.firebirdfaq.org/faq187/

Mis à jour le 10 mars 2009 Cl@udius

Firebird 2.1 a inclus plusieurs fonctions de ce genre dans son moteur, ainsi il n'est plus nécessaire de déclarer des UDFs. Vous pouvez consulter les notes de versions pour plus d'informations et obtenir la liste des fonctions intégrées.

Cette QR s'applique toujours aux versions plus anciennes de Firebird ainsi qu'aux fonctions qui ne sont pas encore intégrées.

Le moteur Firebird possède un nombre limité de fonctions intégrées (Built-In Functions). Cependant, il supporte les UDFs (User Define Functions) qui peuvent être écrites avec n'importe quel langage de programmation produisant des DLL (.so sous Linux).
L'installation par défaut de Firebird fournit actuellement 2 librairies (fbudf et ib_udf) qui définissent la plupart des fonctions communes telles que ABS, SIN, COS, LOG, TRIM, etc. Afin de les utiliser, vous devez les enregistrer dans votre base de données. A noter que vous devez les enregistrer pour chacune des bases de données les sollicitant.
L'enregistrement ressemble à ceci:

Code sql : Sélectionner tout
1
2
3
4
DECLARE EXTERNAL FUNCTION abs 
DOUBLE PRECISION 
RETURNS DOUBLE PRECISION BY VALUE 
ENTRY_POINT 'IB_UDF_abs' MODULE_NAME 'ib_udf';
Vous trouverez les librairies .dll ou .so dans le sous-dossier UDF de votre installation Firebird, ainsi que les scripts SQL permettant d'enregistrer les fonctions dans vos bases de données.

Si vous souhaitez créer vos propres UDFs, vous pouvez consulter l'exemple fourni dans la section "Comment faire" de la FAQ, rédigé en langage Delphi.

Traduction réalisée depuis http://www.firebirdfaq.org/faq169/

Mis à jour le 10 mars 2009 Cl@udius

Oui depuis la version 1.5. Firebird 2.0 tourne sur Linux 64 bits uniquement, et Firebird 2.1 tourne sous Windows et Linux 64 bits. Même si votre plateforme n'est pas supportée, vous pouvez toujours faire tourner votre version 32 bit de Firebird sur votre système 64 bits.

Traduction réalisée depuis: http://www.firebirdfaq.org/faq242/

Mis à jour le 10 mars 2009 Cl@udius

Le serveur Firebird en interne n'a pas de limite, cette limite est imposée par les ressources de votre serveur. Cependant, la plupart des systèmes d'exploitation ont une limite codée en dur de 1024 connexions par port TCP/IP, et on a déjà recensé des cas où cette limite avait été atteinte (particulièrement lorsque l'application classique Client/Serveur est utilisée à travers Internet).

Si vous avez besoin de dépasser cette limite, vous devrez utiliser la technique des pools de connexions, construire une application multi-tiers, pour ainsi disposer de multiples utilisateurs utilisant la même connexion.

Traduction réalisée depuis: http://www.firebirdfaq.org/faq292/

Mis à jour le 10 mars 2009 Cl@udius

Proposer une nouvelle réponse sur la FAQ

Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour ça


Réponse à la question

Liens sous la question
précédent sommaire suivant
 

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2022 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.