장고 앱을 만들고 있습니다. 이 앱을 통해 사용자는 파일을 업로드하고 다른 사용자에게 공개적으로 제공 할 수 있습니다.데이터베이스와 s3/cloudfront를 동기화하기위한 아키텍처
S3 또는 CloudFront를 사용하여 이러한 파일을 관리하고 제공 할 생각입니다. (논의를 위해 S3라고 부르 자.) S3는 S3가 많은 상태를 가질 것이라는 사실이 무엇인지 버그가있다. 내 Python 코드는 사용자 작업에 따라 S3에서 파일을 만들고 이름을 바꾸고 삭제합니다. 그러나 우리는 이미 데이터베이스에 모든 상태를 가지고 있습니다. 두 개의 개별 데이터 저장소에 상태가 있으면 동기화 문제가 발생하고 혼동 될 수 있습니다. 다른 말로하면, "동기화되지 않을 것"입니다. 예를 들어, 누군가가 장고 관리에서 데이터베이스의 레코드를 삭제할 경우, s3의 파일은 고아 상태로 유지됩니다. (그 시나리오를 다루는 코드를 작성할 수는 있지만 모든 시나리오를 포착 할 수는 없습니다.)
그래서 저는 생각합니다 : Postgres 데이터베이스의 데이터와 자동으로 동기화되도록하는 솔루션이 있습니까? ? (나는 데이터베이스에 블롭으로 파일을 저장하는 데 아무런 문제가 없다. 그곳에서 직접적으로 제공되지 않는 한 크지 않다.) 나는 항상 그들 사이의 동기화를 유지하는 활성화 된 프로그램을 갖는 것에 대해 이야기한다. 누군가 데이터베이스에서 레코드를 삭제하면 s3의 해당 파일이 삭제되고 누군가가 S3 인터페이스에서 파일을 삭제하면 데이터베이스에서 레코드가 다시 만들어집니다. 그렇게하면 내 마음이 동기화 문제와 관련하여 쉽게 휴식을 취할 수 있습니다.
그런 종류가 있습니까? 가장 바람직하게는 파이썬.
도움이 될 수 django-cb-storage-s3 및 django-s3sync을 발견했다. 첫 번째 것은 미디어 파일이 아닌 정적 파일 (이름에도 불구하고)을위한 것이고 어떤 식 으로든 업데이트되지 않았으며 두 번째 파일은 폐기 된 것처럼 보입니다. 대답에서 제안한 해결책이 효과가있을 수 있습니다 ...하지만 여전히 사용할 수있는 패키지가 필요합니다. –