-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Datastore requirements for mod data and metadata #3
Comments
Here're my two cents:
|
I think this would be a mistake. A decision will have to be made upfront before we have any real metrics about the average size of mods and average server load. There needs to be infrastructure in place initially for the pioneers that upload real mods, even in some alpha period. If nothing else, perhaps we should prioritize an initial storage solution that is pluggable? That way if it's determined that the first choice was a bad one, a better option can be swapped in without much fuss.
This issue of integration was brought up the conversation on gitter. They're right, integrations should be secondary to the primary goals of the modstore. The integrations should enhance an already good foundation that the modstore provides.
I agree. I love over engineering things as much as the next developer, but making a reasonable choice here is key. We should prioritize simplicity and a developer experience that is as friction-less as possible. Siding with a tried and tested datastore solution would be a good bet, I think. |
Let me rephrase my comment. I agree that the initial decision will indeed have to be made before the first mod is created, but it should be made based on the same practical concerns as the choice of DB. The initial load and storage requirements will be minimal, and we should think of moving to a "proper" hosting solution when we have a better idea of the average mod size and so on.
No matter what is chosen, the end result will be a direct link to the package file. If this link is a part of the manifest file, then it will be possible to easily change the storage provider: we'll only need to update the links in manifests after migrating. Overall, for both storage and DB, my suggestion would be to go with whatever there is on the Anselm's webserver that hosts the website today. If it is MySQL, PHP and |
According to Anselm,
|
Modstore Data Requirements
Data Objects / Sources
(Copied from Data Objects / Sources in the README)
A Mod Archive
Manifest
README.md
CHANGELOG.md
Database Records
Mod
Mod Rating
Cross-platform Compilation Service
Cross-platform binary downloadables
Database Solutions
Both Mongo and Postgres offer the same solution, but Postgres affords stronger consistency guarantees. However, if high availability is a concern, then Mongo could be a good choice despite its potential for inconsistency.
Mongo Considerations
Mongo is still "eventually consistent."
This jumps out as a disadvantage to choosing Mongo: "Reads from secondaries can be useful in scenarios where it is acceptable for data to be slightly out of date."
It seems necessary that records for mod dependencies should never be out of date as this could complicate mod downloading/installing. If a request for a group of dependencies for a particular mod yield out of date results, this could impact the performance of the server because it would then have to try again to get a required version of a dependency a second (or more) times.
Postgres Considerations
Is Postgres NoSQL Better Than MongoDB?
TBD
Questions
Mod Archive Storage
Amazon's S3 Consistency Model (S3 is eventually consistent)
The text was updated successfully, but these errors were encountered: