[fpc-pascal] Documentation for sqldb - More Questions
Michael Van Canneyt
michael at freepascal.org
Tue Jul 3 17:38:16 CEST 2007
On Tue, 3 Jul 2007, Joost van der Sluis wrote:
> On Tue, 2007-07-03 at 14:13 +0200, Martin Schreiber wrote:
> > > I aggree with Michael on this. Besides, last time I looked at your
> > > 'TBufDataset' (which is a actually a fork, offcourse) it only
> > > implemented blob-fields, on top of the existing TBufDataset.
> > >
> > > The current TBufDataset also supports blob-fields, in a (in my
> > opinion)
> > > better way, now. Are there any other changes/additions?
> > >
> > It is completely rewritten. Buffer organisation is not a linked list,
> > the
> > record pointers are hold in arrays to allow simple record accessing
> > by
> > locally builded indexes and easy recno handling. String fields are
> > stored as
> > widestrings, there are no fixed string field sizes in the record
> > buffer. It
> > has the possibility to work comparable to TClientDataset with a local
> > change
> > log and data file.
>
> I had the 'old' tmbufdataset in mind. The TMSEbufDataset is indeed very
> different.
>
> As you can probably remember, the TBufDataset also used a array to store
> the record buffers. I changed that because benchmarks showed that the
> current solution is much faster. Even if you want to address a record
> immediately, as long as you use a bookmark, and not the recno directly.
> Which is imho not always a good idea.
Recno should never be used for positioning.
> But there are no indexes yet, that's completely true.
>
> What I do like is the idea of storing strings in a
> widestring/ansistring. I tried to implement that earlier, but it's not
> doable in a Delphi-compatible way. As you said, you don't have that
> problem. But it's still something on my whish-list for
> sqldb/TDataset/TBufDataset. There must be a solution, without using the
> blob-system...
I do not think this is a good idea: the amount of memory used for this is
a multiple of the classic buffer scheme, the heap will be terribly fragmented.
The buffer system is exactly meant to save memory (blobs excepted).
> What do you mean with the local change log and data file?
Like TClientDataset: the changes to the records (the delta) are kept in a
separate index. All can be written to file. It's a briefcase model.
Michael.
More information about the fpc-pascal
mailing list