Software-update: Firebird 2.0

Om grote hoeveelheden gegevens op te slaan worden vaak databases gebruikt. Aangezien deze beter te onderhouden en te benaderen zijn dan een simpel tekstdocument waarin de gegevens worden vastgelegd. Bekende namen zijn natuurlijk Oracle met zijn Oracle 9i database, IBM met de DB2 database en Microsoft met SQL Server.

Firebird heeft als oorsprong de InterBase database van Inprise Corp (tegenwoordig Borland Software Corp), de geschiedenis van InterBase en Firebird is op deze pagina na te lezen. Deze relationele database ondersteunt verschillende besturingssystemen waarop het geïnstalleerd kan worden, zoals het Linux- en Windows-platform waardoor het breed kan worden ingezet. De ontwikkelaars hebben versie 2.0 uitgebracht met de volgende opmerking:

Firebird 2.0

Firebird 2.0 brings a large collection of long-awaited enhancements that significantly improve performance, security and support for international languages and realise some desirable new SQL language features. Under the surface, it also provides a much more robust code platform from which the re-architecting planned for Firebird 3.0 is proceeding.

Several limitations inherited from the legacy code have now gone, such as the 252-byte limit on index size and sub-optimal usage of index statistics that could throttle performance. Table size is no longer limited to 30 Gb.

Indexing has undergone a thorough reworking to ramp up performance and reduce or eliminate the effects of poor selectivity.

An important feature is the introduction of a new interface for plugging in international character sets, including enhanced Unicode support, along with a number of new and corrected collations.

Firebird 2.0 now supports 64-bit platforms with released binaries available for AMD64 and Intel EM64T on Linux. Windows 64-bit builds are ready for testing and will follow in a sub-release.

Several aspects of server security have received an intense makeover, with a large number of known vulnerabilities in the API being closed along the way.

Porting of the Services API to Classic architecture is now complete. All Services API functions are now available on both Linux and Windows Classic servers, with no limitations.

Language Enhancements

Many new additions have been made to the SQL language, including support for derived tables (SELECT ... FROM ( SELECT ... FROM)) with multiple layers of nesting and the ability to join nested sets, as defined by SQL200X.

A new capability has been added to execute blocks of procedural SQL (PSQL) in dynamic SQL statements, by way of the new EXECUTE BLOCK syntax.

An optional RETAIN clause is added to the DSQL ROLLBACK statement to make it consistent with COMMIT [RETAIN].

All Firebird versions provide two transaction wait modes: NO WAIT (non-blocking, excepts immediately on conflict) and WAIT (blocking, waits until the conflicting transaction ends). A new feature extends the WAIT mode by allowing a finite interval of waiting and then reporting an error (isc_lock_timeout). Timeout intervals are specified per transaction and are available both in the API and via the LOCK TIMEOUT clause of the SET TRANSACTION statement.

A reworking has been done to resolve problems with views that are implicitly updatable, but still have update triggers. This is an important change that will affect systems written to take advantage of the undocumented [mis]behaviour in previous versions.

String search operators have been re-implemented and now work correctly with BLOBs of any size. Introduction of a single-pass Knuth-Morris-Pratt algorithm for pattern matching improves performance when complex patterns are used.

From Firebird 1.0 onward, concatenation operations were checked for potential overflow at prepare time and would except if an overflow was possible according to the defined or declared lengths of the operands. Thus, an expression like "CAST('qwe' AS VARCHAR(30000)) || CAST('rty' AS VARCHAR(30000))" would cause an exception because 60000 bytes exceeds the string limit. Now, it will cause only a warning at prepare time and will succeed if the introduced run-time check on actual data detects an overflow.

Some handy new extensions have been added to PSQL itself, including multiple explicit cursors which are also available within DSQL EXECUTE BLOCK statements.

Invariant tracking in PSQL and request cloning logic were reworked to fix a number of performance and accuracy issues with recursive procedures.

Security

Password encryption now uses a more secure password hash calculation algorithm (SHA-1), encryption becomes entirely server-based and password login is now required from any remote client, regardless of the user's platform privileges. Non-server access to security database is rejected: the server will refuse any access to the authentication database, even by the SYSDBA'S gsec utility, except through the Services API.

The SYSDBA remains the keeper of the security database but users can now modify their own passwords by way of a view over the (new) underlying, protected RDB$USERS table.

Attempts to get access to the server using brute-force techniques on accounts and passwords are now detected and locked out, with support for this protection built in to both the database and services API's.

Network and Connection

Server redirection ("multi-hop") capability, long disabled because of exposure to misuse, has been restored and made available via a configuration parameter for careful use by those who properly understand its implications.

Firebird 2.0 replaces the former implementation of the local transport protocol on Windows (often referred to as IPC or IPServer) with a more robust new one, named XNET. It serves exactly the same goal, to provide an efficient way to connect to server located on the same machine as the connecting client without a remote node name in the connection string. The XNET implementation does not suffer the instability inherent in its predecessor. It works with the Classic server, it works for non-interactive services and terminal sessions and it eliminates lockups when a number of simultaneous connections are attempted. Slightly faster performance can be expected also.

Under the WNET (a.k.a. NetBEUI) protocol, all previous Firebird versions performed remote requests in the context of the client security token. Since the server serves every connection according to its client security credentials, this means that, if the client machine is running some OS user from an NT domain, that user required appropriate permissions to access the physical database file, UDF libraries, etc., on the server filesystem. This situation-known as client impersonation-is contrary to proper protocol for a client-server setup with a protected database and is no longer supported. In Firebird 2.0, WNET connections behave the same way as TCP ones, presuming nothing with regard to the rights of OS users.

Connection handling on POSIX Superserver has been improved and will now handle SIGTERM and SIGINT to shutdown all connections gracefully.

Engine Internals

Firebird 2.0 introduces 40-bit (64-bit internally) record enumerators to overcome the ~30GB table size limit imposed by 32-bit record enumeration.

Garbage collection: Since Firebird 1.0 and earlier, the Superserver engine has performed background garbage collection, having abandoned the "cooperative" mechanism that drives GC in the Classic server environment. It has long been recognised that cooperative GC, if available, would be useful to Superserver for some conditions and configurations where waiting for background GC to finish a cycle causes peformance bottlenecks.

In Firebird 2.0 Superserver, both cooperative and background garbage collection are performed in combination, by default. To manage it, the new configuration parameter GCPolicy was introduced to make it possible to set GC to be only cooperative or only background.

Lock contention in the lock manager and in the SuperServer thread pool manager has been reduced significantly and lock manager memory dumps now provide better information.

Several debugging improvements have been added, including file name and line number being reported for BUGCHECK log messages, new thread-safe and signal-safe debug logging facilities and the ability to copy syslog messages to the user's tty.

The root directory lookup path has changed so that server processes on Windows no longer use the Registry, although the command-line utilities still do check the Registry.

UDFs, Utilities and Command-line Tools

External functions now have the ability to signal SQL NULL via a NULL pointer and the native external function library ib_udf is upgraded to allow the string functions ASCII_CHAR, LOWER, LPAD, LTRIM, RPAD, RTIM, SUBSTR and SUBSTRLEN to return NULL and have it interpreted correctly.

Many of the command-line tools have been refurbished and this release introduces the all-new incremental backup tools NBak and Nbackup.

Single-user and full shutdown modes are made possible by the introduction of new [state] parameters for the gfix -shut and gfix -online commands.

Known issues in previous versions of Firebird with gsec error reporting through the Services API are eliminated.
Versienummer 2.0
Besturingssystemen Windows 9x, Windows NT, Windows 2000, Windows XP, Linux x86, Windows Server 2003, Linux AMD64
Website Firebird Project
Download http://www.firebirdsql.org/index.php?op=files&id=engine_200
Licentietype Voorwaarden (GNU/BSD/etc.)

Door Japke Rosink

Meukposter

13-11-2006 • 22:38

16

Submitter: sneep

Bron: Firebird Project

Update-historie

Reacties (16)

16
16
8
3
0
1
Wijzig sortering
Voor wie is dit iets?

Ik weet vrij weinig van databases, enige ervaring met Access, maar dat kun je nauwlijks een database noemen (een fatsoenlijke database heeft geen server en gui in hetzelfde bestand). Maar mijn idee is:
Als je weinig weet van databases kun je beter beginnen met een grote bekenede database. Tutorials voor (PostgreSQL,) mySQL, Oracle etc. zijn wel te vinden her en der, bij een minder bekende wordt dat lastiger.
Als je meer van databases weet kies je een grotere db, zoals (PostgreSQL,) mySQL, Oracle, omdat deze meer mogelijkheden bieden.

Dit is geen vlambericht, maar een serieuse vraag: voor wie is dit de database?
Zeer goede vraag. Ik ken firebird eerlijk gezegd totaal niet, maar ben wel redelijk bezig met databases. Volgensmij is deze meer voor grote applicaties (en sites?) met een behoorlijke hoeveelheid aan records (meer als 30 gb per tabel!).

Wat de echte voordelen zijn tov oracle, postgreSQL e.d. blijft mij op dit moment echter ook nog wel een duister raadsel. Zal vast ergens wel z'n voordelen hebben (misschien door de open source community?)
Ik heb er een tijdje mee gewerkt bij m'n vorige baas :) Eerst Interbase en daarna Firebird.

Het is een verademing om te installeren! Kleine 2 minuutjes, database koppelen en gaan! Performance is prima, SQL syntax is prima, aardig leuke features en gratis! Daarnaast gewoon erg klein (25MB incl. wat tools voor 1.5x versie)!

Vele malen beter dan MySQL (tenminste v4.xx), waarschijnlijk beter te vergelijken met PostgreSQL

Ik kan IBOConsole aanraden als DB Tool, simpel maar voldoende voor backup/restore, tabellen bekijken, scripts uitvoeren etc. Voor importeren/exporteren zijn er ook voldoende tools te vinden, alhoewel ik zelf DTS van SQL Server wel makkelijk vind :)
Firebird is een zeer volwassen RDBMS. Waarom kies je het niet? Misschien omdat je het niet kent.

Hetzelfde viel / valt te zeggen voor MaxDB, nu deel van het MySQL project, maar voorheen een losse Open Source database met als naam SapDB, dat gebouwd was door de jongens van SAP en waar ook veel SAP-klanten nu nog hun systemen op draaien.

Maar "proven technology" (wat MySQL en PostgreSQL ondertussen wel zijn) is niet altijd de beste technologie. Dus als je de tijd hebt, kijk eens wat om je heen en stap af van die gebaande paden.
Ik heb het laatst ook gebruikt voor een ontwikkeling. Het is compact en snel. Had eerst Postgres en MySql gebruikt waarvan de laatste toch al een tijdje mijn favoriet was. Maar de snelheid en gebruik van resources was bij Firebird veel beter (server en programma draaiden op zelfde PC).
- Gratis database
- erg snel
- feature rich, dus als je sqlserver nodig hebt, dan kun je dit ook gebruiken.
- solide. Dus geen MySql crap. En ja, MySql is crap in veel opzichten, een database die toestaat dat je sloppy ACID-eske transacties kunt hebben is niet solide
- embedded mogelijkheid: je kunt een firebird db tezamen met een dll gebruiken zonder server process dus ideaal voor desktop applicaties die een db nodig hebben maar meer willen dan MS Access.

Firebird 1.x had nog een paar narigheidjes, zoals geen derived tables en je kon niet sorteren op een field alias (moest op ordinal), maar dat schijnt nu verholpen te zijn.

Ik snap trouwens niet goed waarom je deze vraag stelt. Als je niets van databases afweet en ze dus ook niet nodig hebt, dan snap je uiteraard ook niet wat het voordeel van Firebird kan zijn boven andere databases.
Anoniem: 52220 @EfBe14 november 2006 09:15
Dan mag hij het toch nog wel vragen? Al is het om reacties uit te lokken die voor een ander wel behulpzaam kunnen zijn.
En dat is iig geval bij mij gelukt; Firebird heb ik nog nooit gebruikt maar als de mensen die hier reageren er enthousiast over zijn dan ben ik het eigenlijk een beetje verplicht.

Dus zeker een nuttige post :) ( voor mij dan )
Vroeg ik me ook al af. Wat is het unique selling point van dit spul?
Je kunt de databases gewoon los draaien bij ms access, alleen moet je zelf dat regelen. je maakt gewoon 2 bestanden aan, eentje waar de database inzit en de andere de gui, en in de gui maak je weer een koppeling naar de database. Dit word veel gebruikt, althans waar ik gewerkt heb. Omslachtig/niet erg lochisch is het wel. Maar het kan zeker wel, hangt een beetje vanaf hoe ver je er mee wilt gaan.
Ik weet vrij weinig van databases, enige ervaring met Access, maar dat kun je nauwlijks een database noemen (een fatsoenlijke database heeft geen server en gui in hetzelfde bestand). [..] Dit is geen vlambericht
Lijkt me toch een beetje een vlam...
Allereerst heeft een access db niet een server en gui in hetzelfde bestand. Dat kan hoogstens over het programma acces gezegd worden. Maar dat kan alleen maar een extra reature genoemd worden als de doelgroep in ogenschouw wordt genomen: immers, de database is maar de helft van het verhaal, een gebruiker moet de data altijd ontsluiten. En dat gaat in Access mbv van de GUI relatief makkelijk. Aangezien Access niet voor grote online-applicaties of CRM's gebruikt wordt, hoogstens voor thuisgebruikers en mkb is het een relatief intuïtieve overstap om van excel naar access te gaan.

En dat komt weer volledig overeen met
Als je weinig weet van databases kun je beter beginnen met een grote bekenede (sic) database.
Het hangt er helemaal vanaf wat je wilt bereiken.....

Wat je bedoelt is denk ik dat access juist geen server heeft; zonder gui geen data. Gelukkig is er ODBC.
Daarnaast is het met de access ook mogelijk om MSSQL db's te onsluiten, wat wel praktisch kan zijn tijdens bv de ontwikkelfase
Allereerst heeft een access db niet een server en gui in hetzelfde bestand. Dat kan hoogstens over het programma acces gezegd worden.
De DB-schema's en de GUI-code worden wel in 1 enkel bestand gestopt wat niet meteen heel proper is.

Het *kan* anders, maar Access is IMHO bedoeld voor single-user gebruik en enkel in betrekkelijk eenvoudige situaties (filmcollectie, ...). Access-toepassingen kunnen door "leken" gebouwd worden. De kwaliteit van die toepassingen is meestal ver te zoeken, maar je kan van "leken" toch niet verwachten dat ze een Oracle-DB gaan opzetten met een .NET/Java-applicatie ervoor he...
Daarnaast is het met de access ook mogelijk om MSSQL db's te onsluiten, wat wel praktisch kan zijn tijdens bv de ontwikkelfase
Is dat vervelende karakter van Access dan verdwenen waarbij die meteen de hele table lockt? Indien niet, dan is dit namelijk een slecht idee...

Er bestaan anders ook zat tools om niet-Access DB's te bekijken/bewerken hoor... Ik zie niet meteen waarom je daarvoor Access zou verkiezen boven die andere tools tijdens de ontwikkelfase?!
Ik heb het een tijd gebruikt in combinatie met Delphi applicaties en omdat Delphi van Borland was en InterBase ook een IB en FireBird in de 1.5 reeks nog zeer compatible waren was het heel makkelijk om mee te werken.

Ik heb het zowel gebruikt voor programma's die de database aanspraken op een server als programma's die een eigen, kleine database nodig hadden waarbij de server in principe embedded is in het programma. In beide gevallen (voor mij dan) een verademing om mee te werken. Daarnaast is het klein, snel en zeer makkelijk te beheren.

In 1.5 mistten er helaas nog wel wat features die bij andere DBMS-en wel beschikbaar waren.
Beetje off-topic misschien, maarehmz: "Oracle met zijn Oracle 9i database"... In welk jaar leeft de auteur? Versie 10g is al een behoorlijke tijd uit en 11g zit er aan te komen...
Op mijn middelbare school gebruikten ze firebird ook; voor het opslaan van informatie over scholieren. Denk aan studentnummer, computer login/pwd, rooster, geleende boeken, keuzewerktijd e.d.
Firebird? Is dat niet de vroegere naam van Firefox?

Op dit item kan niet meer gereageerd worden.