citybound / citybound/modstore
Datastore requirements for mod data and metadata
- Dominant language
- No language data
- Stars
- 2
- Forks
- 2
- PR merge metrics
- No merged PRs in 30d
Description
# Modstore Data Requirements
## Data Objects / Sources
(Copied from [Data Objects / Sources](https://github.com/citybound/modstore/blob/08dbbaec332e0903878c5000711da1c2f01ffbfd/README.md#data-objects--sources) in the README)
### A Mod Archive
#### Manifest
- Name
- Version
- Game Version Compatability
- (Dependencies)
#### README.md
- Description
- Tags (standardized format?)
- + for example
- Link to issue tracking if any
#### CHANGELOG.md
- Tertiary assets (In a special folder?)
- Screenshots
### Database Records
#### Mod
- Number of downloads
- Ratings (see below)
#### Mod Rating
- Star Rating? Or just thumbs up/down?
- Rating date
- Rated version of the mod (user has to know?)
- Rating text
- Submitter name (optional)
- Rating Screenshots?
### Cross-platform Compilation Service
Cross-platform binary downloadables
## Database Solutions
- [MongoDB](https://www.mongodb.com/)
- [PostgreSQL](https://www.postgresql.org/)
- Others?
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](https://www.mongodb.com/faq#consistency)."
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?](http://www.aptuz.com/blog/is-postgres-nosql-database-better-than-mongodb/)
TBD
## Questions
- How are mod archives stored?
- Do mod archives include its manifest? **Tentative yes?**
- What (other?) specific data needs to be stored about a mod for the modstore?
- What kind of data consistency guarantees **need** to be made about mod data and metadata?
### Mod Archive Storage
- Will mod archives be stored in something like Amazon's S3 storage?
[Amazon's S3 Consistency Model](http://docs.aws.amazon.com/AmazonS3/latest/dev/Introduction.html#ConsistencyModel) (S3 is eventually consistent)
- Will the app use GitHub's release archive feature for mods available through GitHub?
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.