Comments (5)
I'm interested. I have some very specific requirements in mind, but I'm more than happy to see what you can put together. I think the biggest thing is dealing with indexes--we're responsible for keeping our indexes current and consistent. Ideally, the indexes would be updated on a separate thread. In any case, go ahead. I'd like to see what you can come up with.
from neventstore.
Well I have a rather naive implementation up right now that does no indexing, going to work on that today. I think the indexes should be updated on a single background thread, although maybe full consistency / eventual consistency on indexes is something the user can configure in the wireup? I've never gone this low level before, so forgive me if this is all obvious. I am thinking of doing the indexing like: after a write to the event stream, put the commit info in a thread safe queue. Background thread dequeues, writes the position of the commit, which is just the length of the stream after the events are persisted, then what's being indexed e.g. streamrevision.
from neventstore.
Yes, we definitely want to update indexes on the background thread. The indexes should probably have two representations: in memory (which is fully consistent with writes) and on disk (which is eventually consistent as you have mentioned).
One thing to make sure we do properly is error correction. For example, if a write occurs and succeeds, but then the process dies before the index update occurs. Ideally we'll be able to go to the end of the commit stream at startup and see that something exists. We should then be able to parse the contents to see if one or more commits actually occurred and then we can update the indexes accordingly.
from neventstore.
I'm going to close this as an issue in GitHub, but I still want to make sure you're interested in moving forward with this project.
from neventstore.
I am. I'm coming up to a good break point with my current project, so I should be able to spend sometime on this next week.
from neventstore.
Related Issues (20)
- Paging over all events HOT 4
- Iterating over all streams HOT 2
- Docs out of date?
- Changelog clarification: Serialization/Data format changes between 5.2.0 and newer HOT 3
- Missing Firebird Sql as a Supported Persistence Engine HOT 2
- NEventStore constraint failed with MySql 8.x (works with 5.7) HOT 2
- .Net 5 support
- Upgrading from NES5 to NES8 - what happened to commit dispatchers? HOT 1
- CosmosDB Persistence HOT 1
- Typo on neventstore.org page
- Add net6.0 support
- Bring back intellisense and documentation support
- Refactor IPipelineHook: separate it in multiple interfaces (ISelectionPipelineHook, ICommitPipelineHook)?
- Storage Trade-offs? HOT 2
- Provide a way to invalidate the internal cache of the OptimisticPipelineHook
- Allow upcasting of an event to multiple streams
- Optimize Target Frameworks: netstandard2.0, net462
- NuGet Package: add ReadMe and License
- Quick Start is not that useful and is out of date
- Async Polling Client?
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from neventstore.