| Commit message (Collapse) | Author | Age |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is the initial refactoring to improve how we deal with the storage.
It does a couple of things:
* Rename Sink::Storage to Sink::Storage::DataStore to free up the
Sink::Storage namespace
* Introduce a Sink::ResourceContext to have a single object that can be
passed around containing everything that is necessary to operate on a
resource. This is a lot better than the multiple separate parameters
that we used to pass around all over the place, while still allowing
for dependency injection for tests.
* Tie storage access together using the new EntityStore that directly
works with ApplicationDomainTypes. This gives us a central place where
main storage, indexes and buffer adaptors are tied together, which
will also give us a place to implement external indexes, such as a
fulltextindex using xapian.
* Use ApplicationDomainTypes as the default way to pass around entities.
Instead of using various ways to pass around entities (buffers,
buffer adaptors, ApplicationDomainTypes), only use a single way.
The old approach was confusing, and was only done as:
* optimization; really shouldn't be necessary and otherwise I'm sure
we can find better ways to optimize ApplicationDomainType itself.
* a way to account for entities that have multiple buffers, a concept
that I no longer deem relevant.
While this commit does the bulk of the work to get there, the following
commits will refactor more stuff to get things back to normal.
|
| |
|
| |
|
|
|
|
| |
We used to sort wrong as soon as we got over revision 9.
|
|
|
|
| |
clang-format -i */**{.cpp,.h}
|
| |
|
| |
|
|
|
|
| |
(except for documentation).
|
|
|
|
|
| |
This just gave a 700% boost to query performance from ~2k
to 14k reads per second...
|
| |
|
|
|
|
|
| |
So far only includes modifications and additions,
removals are not yet stored as separate revisions.
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
Because we also keep using the same transactions this finally makes
the resource somewhat performant. On my system genericresourcebenchmark
now processes ~4200 messages per second instead of ~280.
|
|
|
|
|
| |
Trying to read from non-existant databases no longer prints error
messages.
|
|
|
|
| |
This will allow us to create indexes in the same store.
|
| |
|
|
|
|
|
|
| |
The beginning of a cleaner and less bare-bones API for the storage.
The lifetime of transactions is now handled in (movable) transaction
objects.
|
| |
|
| |
|
|
|
|
| |
We have to remove any open environments as well.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
This can replace all our read calls. Note that we need a different API
for databases where the value needs to be loaded first, so we can do a key
scan before loading values. With this we can do key + value scans in one though.
|
| |
|
| |
|
| |
|
|
|
|
|
| |
not happy with this API, but we need to discuss the whole read
thing anyways
|
|
|