|
|
|
Yup
|
|
|
|
|
I'm considering writing a B+ tree in C# but in order to make it worthwhile it needs to be disk backed.
My question is, and it's a weird one but i have my reasons:
Did Btrieve use separate files for its indexes versus its data or was it all in one file?
When I was growin' up, I was the smartest kid I knew. Maybe that was just because I didn't know that many kids. All I know is now I feel the opposite.
modified 13-Sep-19 16:39pm.
|
|
|
|
|
I remember it very good. Everything was in _one_ file.
It does not solve my Problem, but it answers my question
modified 19-Jan-21 21:04pm.
|
|
|
|
|
Thanks! You just helped me understand ISAM a lot better than you maybe know you did.
When I was growin' up, I was the smartest kid I knew. Maybe that was just because I didn't know that many kids. All I know is now I feel the opposite.
|
|
|
|
|
You are welcome I don't think this was a important help. Btw way some details e.g. here: Btrieve Files[^]
It does not solve my Problem, but it answers my question
modified 19-Jan-21 21:04pm.
|
|
|
|
|
it was because it told me how records are managed and a bit about how they're stored. Thanks for the format. I'm not looking to read BTrieve files but I'll save the link because it may answer questions that come up.
My primary interest in ISAM is in how it maps a B+ tree structure to disk, because that's what I'd need to do with a B+tree implementation.
When I was growin' up, I was the smartest kid I knew. Maybe that was just because I didn't know that many kids. All I know is now I feel the opposite.
|
|
|
|
|
honey the codewitch wrote: My primary interest in ISAM is in how it maps a B+ tree structure to disk, because that's what I'd need to do with a B+tree implementation.
You could always take a look at either gnu GDBM or Oracle-Berkeley DB to see how they solved the issue. Unless that's cheating, or you want to avoid any license issues.
|
|
|
|
|
yeah i don't even want to touch anything GNU
besides, that code is mature. it's not so easy to dissect.
I'd rather either start from scratch, or from something simple.
When I was growin' up, I was the smartest kid I knew. Maybe that was just because I didn't know that many kids. All I know is now I feel the opposite.
|
|
|
|
|
k5054 wrote: You could always take a look at either gnu GDBM or Oracle-Berkeley DB to see how they solved the issue. Unless that's cheating, or you want to avoid any license issues. Those DBM libraries simply work in a contiguous memory region and write the entire database back to disk when saved. That's why everyone avoided key-value-store (NoSQL is the new buzzword) databases for over a decade. When RAM became cheap and you build a server with terabyte of RAM... the old things became new again.
By the way... let's give credit to the inventing author... Ken Thompson[^] who wrote the first DBM implementation... sometime in the late 1970's. It's not even mentioned in his wikipedia bio... I wonder if anyone will remember that in 30 years.
Best Wishes,
-David Delaune
Scientiæ de conservata veritate.
|
|
|
|
|
I do. The worlds DOS speed demon data systems used it.
RDP (Resort Data Processing) software was one. Ran on Novell Servers.
And we made a lot of money then.
|
|
|
|
|
honey the codewitch wrote: Did Btrieve use separate files for its indexes versus its data or was it all in one file?
On systems with dual floppies, we sometimes implemented the index on one file one one floppy and the data on another. But those were dedicated turnkey systems on a 32KB machine with 720KB floppies (dual sided.)
|
|
|
|
|
That's actually a smart way to do it in any case - even if you had the space on one disk.
The reason is, as long as the floppy controller supported it, you could have both spindles working at once, and so you don't have as much I/O lag.
The same principle applies in modern databases and is why good database design will partition frequently accessed tables onto their own HD "spindles" - either physical spindles, or just logical like with an SSD - point is, you read from more than one drive at once.
When I was growin' up, I was the smartest kid I knew. Maybe that was just because I didn't know that many kids. All I know is now I feel the opposite.
|
|
|
|
|
I think my new pet peeve are those sites that change their Window title to "(1) New Message" at 1Hz so that, even when they are a background tab they are still annoying you.
Make mental blacklist note, close tab, get on with my work.
cheers
Chris Maunder
|
|
|
|
|
Never mind a mental blacklist - add 'em to your adblock list and never see it again.
There aren't many sites out there that are indispensable - CodeProject is obviously one of those - so if they are annoying, block 'em, maybe tell 'em why, and move on.
Sent from my Amstrad PC 1640
Never throw anything away, Griff
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
I just ported a splay tree function from typescript to C# painlessly and it made my code faster.
this is amazingly and wonderfully not like javascript.
it's a wonder everyone is not using it instead of raw JS.
When I was growin' up, I was the smartest kid I knew. Maybe that was just because I didn't know that many kids. All I know is now I feel the opposite.
|
|
|
|
|
Yeah - I've found TypeScript and never want to go back.
Our own @Pete-OHanlon has written a book on the topic. It's a lifesaver.
cheers
Chris Maunder
|
|
|
|
|
Thanks, Chris. The beer's on me
I have to admit, I am very fond of TypeScript. The more I use it, the fonder I am. So much so, I'm currently writing my second TypeScript book.
|
|
|
|
|
cool!
When I was growin' up, I was the smartest kid I knew. Maybe that was just because I didn't know that many kids. All I know is now I feel the opposite.
|
|
|
|
|
Pete O'Hanlon wrote: So much so, I'm currently writing my second TypeScript book.
Very cool!
|
|
|
|
|
|
'Tis the one. And I thank you.
|
|
|
|
|
The title says 'Advanced'. Is there a basic book that you recommend for TypeScript dummies like me?
|
|
|
|
|
Sorry I haven't had a chance to reply. This[^] book is a decent place to start.
|
|
|
|