2014-09-18 6 views
1

N.B. 이것은 다른 "하나의 큰 DB 또는 여러 개의 작은 DB"라는 질문이 아닙니다.여러 클라이언트에 대해 하나의 큰 MySQL 데이터베이스

클라이언트를 구분하기 위해 user 열이있는 여러 클라이언트 (동일한 구조 등)에 대해 하나의 큰 MySQL 데이터베이스를 사용하면 user 열과 일치하는 사용자의 테이블 액세스를 제한 할 수 있습니까?

저는 Microsoft의 SQL Server에 익숙하지 않지만이 기능을 제공하는 것으로 보이는 "다중 테넌트 데이터 아키텍처"에 대해 읽었습니다.

MySQL과 비슷한 기능이 있습니까?

+0

기본적으로 아니지만 클라이언트별로 다른 데이터베이스를 통해 '비교적 쉽게'에뮬레이트 할 수 있습니다. 이러한 접근 방식은 암시 적 보안 및 확장 성을 제공합니다. –

+0

@yshavit 나는 그것을 안다. 그러나 그것은 내가 묻고있는 것이 아니다. – Sarke

답변

1

MySQL에는 테이블 수준 및 열 수준 권한이 있지만 행 수준 권한은 없습니다.

가장 가까운 것은 사용자가 테이블을 액세스하는 VIEW를 정의하는 것입니다. 뷰에는 기본 테이블에 대한 액세스 권한이 있으며 각 사용자에게는 뷰에 대한 액세스 권한이 있습니다.

현재 사용자의 액세스를 제한하는보기를 정의하십시오.

mysql> create table base (user varchar(16), x int); 
mysql> insert into base values ('[email protected]', 123), ('[email protected]', 456); 
mysql> create view v as select * from base where user = USER() with check option; 
mysql> select * from v; 
+----------------+------+ 
| user   | x | 
+----------------+------+ 
| [email protected] | 123 | 
+----------------+------+ 
+0

좋은 답변입니다! 너는 내 질문에 답하고 나에게 좋은 해결 방법을 주었다. – Sarke

+0

"각 ** 사용자 **에 대한 VIEW 정의"대신 "각 ** 테이블 **에 대한 VIEW 정의"를 의미합니까? 그것은 하나의보기'v는 모든 사용자에 대해 작동합니다 것 같습니다. – Sarke

+0

@ Sarke, 네, 잘 부탁드립니다. 각 표에 대한 하나의보기가 수행됩니다. 또한 모든 테이블을 이런 방식으로 처리해야하는 것은 아닙니다. 일부 테이블은 모든 사용자가 완전히 액세스 할 수 있습니다. –

1

나는 여러 가지 이유로 모든 고객을위한 1 큰 DB 필요에 추천 할 것 :의 잘못에 대해 (나는 우리의 DB 중 하나에 대한 AWS 인스턴스 그냥 멀리 준 시작할 때 작업 한

  1. 을 우리 것). 사무실에서 모두를위한 바쁜 하루 였다고합시다. 이것이 유일한 DB에 발생하면 어떻게 고객 만족을 보장 할 것입니까? 어떻게 견고한 시스템을 유지할 것입니까? google에서 서버가 2 초마다 작동한다는 말이 있습니다. 처음 시작할 때는 이러한 일이 발생하지 않을 수 있지만 서버 장애로부터 자유롭지는 않은지 확인하십시오. DB를 여러 인스턴스로 분할하는 것은 중대한 실패를 방지하기위한 좋은 방법입니다.
  2. 많은 트랜잭션이있는 경우 스레드 풀이 항상 잠겨 있습니다. 데이터베이스에서 CRUD 작업을 수행하는 데 걸리는 시간이 길어지고 고객 만족에 영향을 미치기 때문에이 작업을 원하지 않습니다.

당신이 갖고 싶어 archticture 더 나은 멀티 포트 테넌트는 다음과 같습니다

  1. 는 모든 클라이언트 (처음에 아마 매 2 클라이언트), 당신이 가진 모든 마스터 DB에 대한 노예를 1 마스터 DB를 가지고 . 이제는 노예에 대한 모든 글을 읽고 마스터에 대한 모든 읽기를 수행 할 수 있습니다. DB를 동기화 상태로 유지하는 한 스레드 풀이 가용성을 유지하고 모든 트랜잭션을 신속하게 수행 할 수있는 최상의 방법입니다.

"High Availability, Load Balancing, and Replication"이라는 멋진 기사는 강력한 멀티 테넌트 시스템 구축에 대한 훌륭한 입문서입니다. 또한 기사를 읽는 것이 좋습니다. High Scalability

질문이 있으시면 알려주세요.

+0

흥미 롭습니다, 나는 "읽기 주인, 쓰기 노예"에 대한 당신의 생각을 좋아합니다. Upvote,하지만 슬프게도 내 질문에 대한 대답이 아니야. – Sarke