내 질문 중 하나에 대한 이 의견 후에 X 스키마가있는 하나의 데이터베이스를 사용하는 것이 더 좋은지 또는 그 반대인지 생각합니다.
내 상황 : 사람들이 등록 할 때 (실제로) 데이터베이스를 만드는 웹 응용 프로그램을 개발 중입니다 (소셜 네트워크가 아닙니다 : 모든 사람이 자신의 데이터에 액세스해야하며 다른 사용자의 데이터를 보지 않아야합니다) .
이것이 내가 이전 버전의 응용 프로그램 (여전히 MySQL에서 실행 중임)에 사용한 방식입니다. Plesk API를 통해 모든 등록에 대해 다음을 수행합니다.
- 제한된 권한으로 데이터베이스 사용자를 작성하십시오.
- 이전에 생성 한 사용자와 수퍼 유저 만 액세스 할 수있는 데이터베이스를 만듭니다 (유지 보수 용).
- 데이터베이스를 채 웁니다
이제 PostgreSQL과 동일한 작업을 수행해야합니다 (프로젝트가 성숙 해지고 MySQL은 모든 요구를 충족시키지 못합니다).
모든 데이터베이스 / 스키마 백업을 독립적으로 수행해야합니다. pg_dump는 두 가지 방식으로 완벽하게 작동하며 하나의 스키마 또는 하나의 데이터베이스에 액세스하도록 구성 할 수있는 사용자에 대해서도 동일하게 작동합니다.
따라서 나보다 경험이 많은 PostgreSQL 사용자라고 가정하면 내 상황에 가장 적합한 솔루션은 무엇이라고 생각합니까?
$ x 스키마 대신 $ x 데이터베이스를 사용하면 성능 차이가 있습니까? 미래에 어떤 솔루션을 유지하는 것이 더 좋을까요 (신뢰성)?
모든 데이터베이스 / 스키마는 항상 같은 구조를 갖습니다!
백업 문제 (pg_dump 사용)의 경우 하나의 데이터베이스와 많은 스키마를 사용하여 한 번에 모든 스키마를 덤프하는 것이 좋습니다. 복구는 개발 머신에서 기본 덤프를로드 한 다음 필요한 스키마 만 덤프 및 복원합니다. 하나의 추가 단계이지만 모든 스키마를 덤프하면 하나씩 덤프하는 것보다 빠릅니다.
2012 업데이트
지난 2 년 동안 응용 프로그램 구조와 디자인이 크게 바뀌 었습니다. 나는 여전히 one db with many schemas
접근 방식을 사용하고 있지만 여전히 각 응용 프로그램 버전마다 하나의 데이터베이스 가 있습니다 .
Db myapp_01
\_ my_customer_foo_schema
\_ my_customer_bar_schema
Db myapp_02
\_ my_customer_foo_schema
\_ my_customer_bar_schema
백업의 경우 각 데이터베이스를 정기적으로 덤프 한 다음 개발 서버에서 백업을 이동합니다.
나는 또한 PITR / WAL 백업을 사용하고 있지만 이전에 말했듯이 모든 데이터베이스 를 한 번 에 복원하지 않아도 될 것입니다. 그래서 올해는 해산 될 것입니다 (내 상황에서는 최선의 접근 방식이 아닙니다) ).
one-db-many-schema 접근법은 응용 프로그램 구조가 완전히 바뀌더라도 지금부터 매우 잘 작동했습니다.
나는 거의 잊었다. 모든 데이터베이스 / 스키마는 항상 같은 구조를 가질 것이다 !
... 현재 모든 스키마에는 사용자 데이터 흐름에 동적으로 반응하는 고유 한 구조가 있습니다.