Draft: feat: Optional ScyllaDB

Namekuji requested to merge feat/scylladb into develop

What does this PR do? (Please give us a brief description of what this PR does.)

This PR enables Firefish to store post-related data in ScyllaDB instead of PostgreSQL. This is an optional feature.

Will close #9330.

To test this PR, first switch the branch to feat/scylladb, then copy the example scylla field from .config/example.yaml, and perform the following command at the root of Firefish directory. Several constraints and tables in PostgreSQL that are replaced by ScyllaDB will be dropped. Backup everything including PostgreSQL and Redis/DragonflyDB before performing any commands.

pnpm run build && pnpm run migrate && pnpm run scylla:migrate && pnpm run scylla:setup

You may perform pnpm run scylla:setup -t <num> instead, if your cluster has more than one node.

Behaviour Changes

  • Posts before a user follows won't be fed into one's home timeline.
  • Votes which have already been cast will be deleted from ScyllaDB upon post edition.

Known Regressions

  • API call of recommended timelines and antennas can be slow if they are "sparse".
  • Charts do not work properly.
    • Post count per instance has been disabled
    • Charts on user profiles have been disabled
    • Charts on trending hashtags have been disabled
  • Notifications will not be "unread" state.

Contribution Guidelines By submitting this issue, you agree to follow our Contribution Guidelines

  • I agree to follow this project's Contribution Guidelines
  • I have made sure to test this pull request
  • I have made sure to run pnpm run format before submitting this pull request
Edited by Namekuji

Merge request reports