[Feature Request]: Azure Blob storage and PostgreSQL metadata DB in the Go server (v1.0)

#20494 · open · 0 comments

View on GitHub ↗

BaptisteJosh

### Is there an existing issue for the same feature request? - [x] I have checked the existing issues. ### Is your feature request related to a problem? We run RAGFlow v0.26.x in production with Azure Blob storage (`STORAGE_IMPL=AZURE_SAS`) and PostgreSQL as the metadata database (`DB_TYPE=postgres`). Both work in the Python server. In v1.0.0-rc1 neither is available in the Go server, so we have no upgrade path to 1.0: - `internal/storage/storage_factory.go` accepts only `minio`, `s3`, `oss` and `gcs`. Azure appears only as a data-source connector (`internal/syncer/connector/azure_blob.go`). The `StorageAzureSpn` and `StorageAzureSas` constants exist in `internal/storage/types.go` but have no implementation. - `internal/server/config/database_config.go` accepts only `mysql` and `oceanbase`, and `internal/dao/database.go` imports only the MySQL driver. `docker/.env` says `postgres` and `gaussdb` are available options, but the server rejects them at startup. ### Describe the feature you'd like 1. An Azure Blob storage backend in the Go server, at parity with the Python `azure_sas_conn.py` and `azure_spn_conn.py`. 2. PostgreSQL as a supported metadata database in the Go server, plus a migration path for existing v0.27.2 Postgres installs. ### Describe implementation you've considered The alternative is to move RAGFlow files to S3-compatible storage and the metadata to MySQL. For an existing deployment that means migrating every blob and the whole metadata database, on top of the one-way 0.27.2 to 1.0 migration. We would rather not do that if these are already on the roadmap. ### Documentation, adoption, use case Azure-hosted, Postgres-standardised enterprise deployments, where adding MinIO or MySQL to the platform needs its own approval. ### Additional information Could you tell us: - whether either feature is planned for 1.0 GA or later; - whether a PR for the Azure backend would be accepted, if it is not planned. Separately, the Postgres in-place upgrade fix (#18781) targets `main`, which #20287 says is now Go-only. Will it be retargeted to `0.27.x`?

Comments