최근에 MySQL에서 PostgreSQL로 마이그레이션하기로 결정한 사람 중 하나입니다. 이전 습관이 많이 찢어졌습니다. 그러나 PostgreSQL에서 보존하고 싶은 MySQL의 기능이 있습니다.데이터베이스 유연성 및 개인 정보 보호, 숨겨진 구조, 소프트웨어 호환성 및 공용 권한
그래서 ... 주제 :
- 사용자는 제한된 공간에서 테이블을 생성 할 수있는 능력이 있어야합니다.
- 한 사용자의 테이블은 기본적으로 다른 사용자 (데이터, 구조, 저장 프로 시저 및 기타 등등)에서 볼 수 없어야합니다.
- 선택적으로 다른 사용자에게 GRANT 권한을 부여 받아야합니다.
- 새 사용자에 대한 기본 권한은 사용 권한이 없습니다 (아무 것도 읽지 않고 작성도 더 적음)
- 스키마를 인식하지 못하는 응용 프로그램과의 호환성을 유지하십시오. 포인트 1
:
MySQL을 아래 장소에서 솔루션은 사용자가 기준 'username_의 %'에 데이터베이스를 만들 수 있도록했다. PostgreSQL에서는 사용자 당 하나의 데이터베이스를 사용하여 원하는만큼의 스키마를 생성 할 수 있다고 생각했습니다. 그러나 데이터베이스간에 조인을 수행 할 수 없으며 동일한 데이터베이스의 스키마에서만 조인 할 수있는 한계가 있습니다.
동일한 데이터베이스에서 PostgreSQL 스키마를 모두 가질 가능성은 완전히 없지 않습니다. 그러나 그것은 포인트 2
... 다음 지점을 앓고 :
this question을 읽은 후 나는 유일한 방법은 완전히 개인 데이터가 다른 데이터베이스를 사용하는 것이었다하게 생각하는 경향이 있었다. 아직도 나는 그것을하는 방법을 알아낼 수 없다. 그리고 다른 한편으로는 이전의 점에서 언급 된 조인을 할 수있는 능력과 충돌한다.
포인트 3 :
이도 가능이나 할 당신이 필요로하는 권한의 역할 만들기 '를, 지정된 테이블/스키마에 대한 새 역할을 만들 수 있습니다.
포인트 4 : 다시
이 가능할까요? 내가 읽은 내용에서 기본 '공개'행동과 싸우고있는 것처럼 느껴지지만 관리자가 정보에 대한 액세스 권한을 부여하지 않으면 사용자에게 아무 것도 보이지 않게하고 싶습니다.
포인트 5 :
나는 그들이 데이터베이스에서 수행하는 작업의 직접 제어 할 수 없습니다하는 내가 MySQL과 사용하는 프로그램의 일부는, 인식 스키마되지 않습니다. 이는 스키마 레이어를 무시한다는 의미입니다. 이를 위해 PostgreSQL은 기본적으로 'public'스키마를 제공합니다. 그러나 이것은 어떤 경우에는 여전히 조금 어색합니다.
기본적으로 소프트웨어/도구 당 하나의 독립적 인 데이터베이스가 필요하거나 다른 사용자 (역할) 단위로 미리 정의 된 스키마로 설정하여 시스템을 트릭해야합니다.
그래서 지금까지 발견 한 옵션/해결책입니다. 나는 포인트 5의 search_path를 사용하지 및 테이블/개인 정보 보호를 위해서 다른 데이터베이스의 스키마 (점 1 및 2) 간의 조인 희생과 괜찮아,하지만, 난 여전히 무엇을 알고 싶습니다 위의 문제에 대한 최선의 해결책과이를 실천에 옮기는 가장 좋은 방법은 무엇입니까?
이렇게 말하면, 나는 모두 귀입니다.
PS : 위에서 언급 한 내용을 수행하는 방법에 대한 정보는 물론 환영합니다.
이 올바르게 이해한다면, x 사용자가 자신의 개인 테이블을 가질 수는 있지만 서로 다른 데이터베이스에서도 여전히 올바른 작업을 수행하기를 원하십니까? – chotchki
"여전히 가로 질러 갈 수 있습니다"라는 뜻입니까? 그렇다면 그렇습니다. 이것은 우리가 갖고 싶어하는 기능 중 하나입니다. – Unode