citybound / citybound/modstore

Datastore requirements for mod data and metadata

Open
#3 4 comments 0 reactions 0 assignees View on GitHub
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.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.