media_repository.rst 1.3 KB

123456789101112131415161718192021222324252627
  1. Media Repository
  2. ================
  3. *Synapse implementation-specific details for the media repository*
  4. The media repository is where attachments and avatar photos are stored.
  5. It stores attachment content and thumbnails for media uploaded by local users.
  6. It caches attachment content and thumbnails for media uploaded by remote users.
  7. Storage
  8. -------
  9. Each item of media is assigned a ``media_id`` when it is uploaded.
  10. The ``media_id`` is a randomly chosen, URL safe 24 character string.
  11. Metadata such as the MIME type, upload time and length are stored in the
  12. sqlite3 database indexed by ``media_id``.
  13. Content is stored on the filesystem under a ``"local_content"`` directory.
  14. Thumbnails are stored under a ``"local_thumbnails"`` directory.
  15. The item with ``media_id`` ``"aabbccccccccdddddddddddd"`` is stored under
  16. ``"local_content/aa/bb/ccccccccdddddddddddd"``. Its thumbnail with width
  17. ``128`` and height ``96`` and type ``"image/jpeg"`` is stored under
  18. ``"local_thumbnails/aa/bb/ccccccccdddddddddddd/128-96-image-jpeg"``
  19. Remote content is cached under ``"remote_content"`` directory. Each item of
  20. remote content is assigned a local "``filesystem_id``" to ensure that the
  21. directory structure ``"remote_content/server_name/aa/bb/ccccccccdddddddddddd"``
  22. is appropriate. Thumbnails for remote content are stored under
  23. ``"remote_thumbnails/server_name/..."``