Seite 1 von 1

extend dbf 2TB (Terabyte) max file size

Verfasst: So, 12. Jul 2020 18:47
von AUGE_OHR
hi,

hab diese Message gefunden

https://groups.google.com/forum/#!topic ... Fc6qLTERi8

Code: Alles auswählen

#include "dbinfo.ch"
...
 set( _SET_DBFLOCKSCHEME, DB_DBFLOCK_HB64 )
2014-10-17 14:55 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* include/hbrddcdx.h
* src/rdd/dbfcdx/dbfcdx1.c
+ added support for large index files over 4GB length.
These are slightly modified CDX indexes which stores index page numbers
instead of index page offsets inside index file. This trick increase
maximum index files size from 2^32 (4GB) to 2^41 (2TB). This index
format is enabled automatically when DB_DBFLOCK_HB64 is used. This is
the same behavior as in DBFNTX and DBFNSX for which I added support
for large indexes (up to 4TB) few years ago.

Warning: new CDX indexes are not backward compatible and cannot be
read by other systems or older [x]Harbour versions.
If you try to open new indexes using older [x]Harbour RDDs
then RTE "DBFCDX/1012 Corruption detected" is generated.
When current Harbour *DBFCDX/SIXCDX RDD open index file
then it automatically recognize type of index file so it
will work correctly with both versions without any problem.
In short words: People using DB_DBFLOCK_HB64 should remember
that after reindexing with new Harbour applications old ones
cannot read new CDX indexes.
wäre nicht schlecht wenn das Xbase++ auch hätte ...
p.s. benötigt 64 Bit App

Re: extend dbf 2TB (Terabyte) max file size

Verfasst: Mo, 13. Jul 2020 7:00
von Jan
Jimmy,

dieser Forenbereich ist nicht für harbour vorgesehen. Und die Diskussion um Sinn oder Unsinn von 64 Bit Xbase++ oder ob und wann Alaska das machen wird hatten wir auch schon oft genug. Es genügt nicht wenn Du das hier als schön zu haben deklarierst - das mußt Du mit Alaska diskutieren.Und der Hinweis das Du gerne Dateien mit mehr als 2 TB schrieben möchtest ist vermutlich nicht allzu antreibend für solch eine Umstellung. Wer hat schon im normalen Leben so große Dateien?

Jan

Re: extend dbf 2TB (Terabyte) max file size

Verfasst: Mo, 13. Jul 2020 11:29
von brandelh
Haben wir nicht genug Probleme mit den 2 GB Dateien und den dazugehörigen Indexdateien (Performance, Zuverlässigkeit etc.) ?
Wenn die Datei 10 mal so groß wäre, dauert der Reindex noch länger ;-)

PS: auch die 32 bit EXE kann Memo Dateien über 4 GB verwalten, es geht mit 64 Bit Variablen auch mit 32 Bit.

Was nicht geht ist die LOCK Sperre der Xbase Dateien, da diese nunmal die gerade Hälfe für die Daten und den Rest für Lockoffset verwendet wird.
Man könnte einen Treiber der völlig inkompatibel mit allem ist schreiben (ich nicht) und größere Dateien nutzen, aber das lohnt einfach nicht.

Re: extend dbf 2TB (Terabyte) max file size

Verfasst: Mo, 13. Jul 2020 13:40
von ramses
Macht es überhaupt Sinn derart grosse Datenbestände mit DBF's zu verwalten?

Ich würde dies jedenfalls aus vielen Gründen nicht tun sondern für sowas eine Datenbank bezw. PostgreSQL verwenden.

Re: extend dbf 2TB (Terabyte) max file size

Verfasst: Mo, 13. Jul 2020 19:46
von AUGE_OHR
hi,

DBF Datei > 2 GB ist nicht das Problem. wie Hubert richtig sagt ist es das Locking und das ist API.
sicherlich habe schon einige darüber nachgedacht wie man die 2 GB überschreiten kann denn es IST möglich.

Ihr geht von "local" 2 TB aus ... schon mal an einen DbServer gedacht :idea:
es gib ja den teuren ADS Server aber es gibt eben auch "kostenlose" DbServer die LetoDB
SQL ist dann keine Alternative wenn man seinen Source Code nicht verändern will

klar das es nur geht mit 64 Bit. Es kann also noch Jahre Dauern bis Alaska auf dem Stand ist.

Re: extend dbf 2TB (Terabyte) max file size

Verfasst: Do, 16. Jul 2020 8:19
von brandelh
AUGE_OHR hat geschrieben: Mo, 13. Jul 2020 19:46 DBF Datei > 2 GB ist nicht das Problem. wie Hubert richtig sagt ist es das Locking und das ist API.
sicherlich habe schon einige darüber nachgedacht wie man die 2 GB überschreiten kann denn es IST möglich.
die API (Windows) kann größere Dateien, das "Logische" locking der xBase derivate blockiert den Adressbereich, das ist das Problem.
Mit FOPEN() etc. z.B. kann man größere Dateien öffnen und schreiben.

Auch 32 Bit Systeme, können größere Dateien schreiben, da diese über 2 Register auch 64 Bit Werte darstellen können.