Uploaded image for project: 'Nuxeo Platform'
  1. Nuxeo Platform
  2. NXP-16550

Use a BlobManager for blob storage/retrieval

    XMLWordPrintable

    Details

    • Type: New Feature
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 7.2
    • Component/s: Core, Core MongoDB, Core VCS
    • Upgrade notes:
      Hide

      When upgrading from a previously-created database, you will need to increase the size of the DATA column in the CONTENT table so that it can hold the full information of the external blobs:

      PostgreSQL:
      ALTER TABLE content ALTER COLUMN data TYPE VARCHAR;
      MySQL:
      ALTER TABLE content MODIFY data VARCHAR(250) BINARY;
      Oracle:
      ALTER TABLE content MODIFY (data VARCHAR2(250));
      SQL Server:
      ALTER TABLE content ALTER COLUMN data NVARCHAR(250);

      Show
      When upgrading from a previously-created database, you will need to increase the size of the DATA column in the CONTENT table so that it can hold the full information of the external blobs: PostgreSQL: ALTER TABLE content ALTER COLUMN data TYPE VARCHAR; MySQL: ALTER TABLE content MODIFY data VARCHAR(250) BINARY; Oracle: ALTER TABLE content MODIFY (data VARCHAR2(250)); SQL Server: ALTER TABLE content ALTER COLUMN data NVARCHAR(250);
    • Sprint:
      Sprint RepoTeam 7.1-2

      Description

      Currently Blobs are exploded into a Binary and other regular properties at the Session (VCS, DBS) level of abstraction, and lower levels (VCS JDBC storage, DBS MongoDB implementation) receive a Binary.

      The Binary doesn't need to be sent that deep in the abstraction layers, because at the storage level we only need a string for its data. And indeed, knowing how to turn a Blob into a set of regular properties for storage can be abstracted in a BlobManager service, and the Binary doesn't need to be exposed at all.

      1. Create a BlobManager service that knows how to read/write a Blob.
      2. Implement it based on pluggable BlobProviders.
      3. Implement a default BinaryBlobProvider that indirects to the current BinaryManager.
      4. Use this BlobManager abstraction in the Session layer for blob read/write.

        Attachments

          Issue Links

            Activity

              People

              • Votes:
                0 Vote for this issue
                Watchers:
                2 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: