Wat is het NDX-bestandsformaat?
Een .ndx-bestand is een B-tree-index voor een enkel veld die is gekoppeld aan een dBASE-database (.dbf). Geïntroduceerd met dBASE III in 1984, biedt het gesorteerde toegang tot records zonder de hele tabel te hoeven scannen - vergelijkbaar met een index in een gedrukt boek.
Het formaat slaat een B-tree op van vaste nodes van 512 bytes. Een header van 16 bytes registreert het nummer van het root-blok, het totale aantal blokken, de sleutellengte, het sleuteltype en een vlag voor unieke waarden. Elke leaf-node bevat sorteersleutelwaarden samen met recordnummer-pointers terug naar het .dbf-bestand.
Eén .ndx-bestand indexeert precies één sleuteluitdrukking - een veldnaam of eenvoudige formule, tot 220 tekens, waarbij de geëvalueerde sleutel beperkt is tot 100 bytes. Deze beperking van één index per bestand is de belangrijkste beperking van .ndx vergeleken met het latere .MDX-formaat (dBASE IV, 1988), dat tot 47 index-tags in één bestand opslaat en automatisch wordt bijgewerkt.
Cruciaal is dat .ndx-indexen niet automatisch worden bijgehouden wanneer records worden toegevoegd, verwijderd of gewijzigd in de .dbf. Gebruikers moeten een expliciet REINDEX- of SET INDEX TO-commando geven in dBASE om ze opnieuw op te bouwen - een verouderde index produceert onjuiste zoekresultaten. Moderne tools zoals dBASE Plus en DBF Viewer Plus accepteren nog steeds .ndx-bestanden voor legacy-compatibiliteit. FoxPro en Visual FoxPro geven de voorkeur aan het .cdx compound index-formaat.
Beveiliging & veiligheid
RISICO: LOWNDX-bestanden bevatten alleen indexgegevens (sleutels + record-pointers); geen uitvoerbare code. Veilig te openen met elke xBase-compatibele viewer. Corruptie van een NDX heeft geen invloed op DBF-gegevens - de index kan opnieuw worden opgebouwd.
Formaatdetails
in een notendop- FoxBase/FoxPro Index-bestand - FoxBase en vroege FoxPro gebruikten ook .ndx single-index bestanden (hetzelfde formaat als dBASE III NDX); FoxPro 2+ stapte over op .cdx compound index.
- Index-bestand (generieke naamgeving) - Sommige aangepaste applicaties gebruiken .ndx generiek als een tekst- of eigen indexbestand dat geen verband houdt met dBASE.
Programma's die NDX-bestanden openen
Technische details
diepe specificaties| Formaat-type | Binair B-tree-index voor één veld voor dBASE-databases |
| Codering | Binair, little-endian |
| B-tree node-grootte | Vast 512 bytes per node (root-, branch- en leaf-nodes) |
| Header | 16 bytes - root-bloknummer, totaal aantal blokken, sleutellengte, sleuteltype (teken/numeriek), unieke vlag, versie-byte |
| Limiet sleuteluitdrukking | Tot 220 tekens in de uitdrukking; geëvalueerde sorteersleutelwaarde beperkt tot 100 bytes |
| Indexcapaciteit | Eén sleuteluitdrukking per bestand (beperking van één index - één `.ndx`-bestand per geïndexeerd veld of uitdrukking) |
| Gekoppelde database | Bijbehorend `.dbf`-bestand; leaf-nodes slaan recordnummer-pointers op naar de DBF-gegevensrijen |
| Gedrag bij automatische update | Index wordt NIET automatisch bijgehouden; vereist expliciete `REINDEX` of `SET INDEX TO` na DBF-wijzigingen |
| Oorsprong | dBASE III door Ashton-Tate; compatibel met dBASE IV, V en moderne xBase-implementaties |
| Vervangen door | `.mdx` (dBASE IV - tot 47 automatisch bijgewerkte index-tags per bestand); `.cdx` (FoxPro / Visual FoxPro) |
| Bijbehorend OS | DOS (origineel), Windows (legacy-compatibiliteit in moderne tools) |
| Moderne ondersteuning | Nog steeds geaccepteerd door dBASE Plus en DBF Viewer Plus voor legacy-compatibiliteit |
| Sleuteltypes | Tekenreeksen en numerieke waarden; datumvelden worden geconverteerd naar tekenrepresentatie voor indexering |
| Risico op verouderde index | Een `.ndx` die niet opnieuw is opgebouwd na DBF-wijzigingen, geeft zonder waarschuwing onjuiste zoekresultaten |
| Uitgebracht | 1984 (dBASE III) |
| Laatste versie | dBASE III-compatible NDX (unchanged since dBASE III era) |
| Open standaard | Ja · royaltyvrij |
| Specificatie | pic.hallikainen.org |
NDX conversies
Community V&A
gevraagd door gebruikersNog geen vragen - wees de eerste om iets te vragen over NDX-bestanden.