홈>
앱을 빌드하는 동안 문제가 발생했습니다. 정보가있는 데이터베이스 테이블이 있으며 다른 응용 프로그램에 재사용하고 싶습니다. 주로 인증 및 사용자 권한을 위해.
그러므로 데이터베이스를 사용자 데이터 (다른 응용 프로그램에 필요한 데이터)와 응용 프로그램 관련 데이터 (데이터에만 필요한 데이터)에 대해 두 개로 분할하기로 결정한 것입니다.
어떤 경우에는 다른 데이터베이스의 한 데이터베이스에서 외래 키를 참조해야합니다. 데이터베이스가 동일한 연결에있는 동안에는 아무런 문제가 없었습니다. 나는 그렇게했다 :
CREATE TABLE `database1`.`table1` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`foreign_key` int(10) unsigned DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `table1_foreign_key_foreign` (`foreign_key`),
CONSTRAINT `table1_foreign_key_foreign` FOREIGN KEY (`foreign_key`) REFERENCES `database2`.`table2` (`id`)
);
이제 내 문제이다.
Docker
를 알게되었습니다
각 데이터베이스에 대한 컨테이너를 만들고 싶습니다. 이해가 정확하면 각 컨테이너는 다른 연결 역할을합니다.
다른 데이터베이스 연결에서 외래 키를 참조 할 수 있습니까?
하나의Docker
에서 외래 키를 참조하는 다른 방법이 있습니까?
다른 용기?
의견이나 의견은 대단히 감사하겠습니다.
- 답변 # 1
- 답변 # 2
아니요, 불가능합니다. 다른 DB 인스턴스 (또는 귀하의 경우 다른 Docker 컨테이너)에 FK를 만들 수 없습니다. 응용 프로그램 수준에서이 확인을 시도 할 수 있습니다.
관련 자료
- sql server - Visual Studio에서 VBNET을 사용하여 로컬 SQL 데이터베이스에 연결하는 연결 문자열 문제
- python - docker django 데이터베이스 연결 오류 - 유니 코드 ascii 'utf-8'및 유니 코드 'utf-16le'인코딩 사용
- php - 모델에서 Laravel 58 동적 데이터베이스 연결이 설정되지 않음
- gridview - Flutter에서 다른 Stateful 위젯을 연결하는 방법
- java - 각 메소드에서 또는 데이터베이스에서 한 번만 데이터베이스 연결 설정을 호출해야합니까?
- python - 루프에서 여러 데이터베이스 연결을 만들어야합니까?
- sql server - vba - 별도의 모듈에서 sql 데이터베이스 연결을 호출하는 방법
- python - mysql 데이터베이스의 다른 행에 정보 행을 삽입하는 방법은 무엇입니까?
- sql - 동일한 데이터베이스 - 다른 클라이언트의 다른 출력
- TCPS를 사용하는 Oracle Database와 AspNet Core 연결 Not workinf
- java - 데이터베이스 연결 다시 시도 Dropwizard
- sql - 전자 상거래 데이터베이스에서 외래 키를 설정하는 아이디어 방법은 무엇입니까
- ssl - PostgreSQL 데이터베이스에 대한 Talend 연결 실패
- dataframe - Pandas와 GeoPandas가 psycopg2 연결을 사용하여 데이터베이스 테이블을 읽을 수 있지만 SQLAlchemy에 의존하여 작성해야하는 이유는 무엇입니까?
- php - android url 연결 오류 - xampp를 사용하는 데이터베이스 연결 오류
- sql - 다른 컴퓨터에서 다른 의도로 Java 응용 프로그램에 데이터베이스를 추가하는 방법
- sql - 동일한 외래 키를 가진 모든 행이 내 PostgreSQL 데이터베이스에서 고유 한 이름을 가지도록하려면 어떻게해야합니까?
- sequelize.js - aws sam을 사용하여 다른 데이터베이스에 연결하고 로컬 배포시 sequelize를 사용하려면 어떻게해야합니까?
- javascript - nestjs - 데이터베이스 연결을 위해 기본 앱 모듈 파일에서 env 변수를 사용하는 방법
- android - PHP 000webhost 데이터베이스 연결 실패
관련 질문
- python : django 도커 컨테이너를 빌드할 때 (1045, "사용자 '사용자'@'IP 또는 호스트'(비밀번호 사용: YES)에 대한 액세스가 거부됨")를 해결하는 방법은 무엇입니까?
- 컨테이너화된 스프링 부트 애플리케이션이 컨테이너화된 MySQL 서버와 연결할 수 없는 이유
- database : Docker의 Wordpress에서 DB를 볼 수 없음
- 하나의 PHP 파일에서 여러 쿼리 사용 이전 쿼리의 결과 집합
- MariaDB/MySQL 백업 복제
- 외부 시스템에서 도커에 호스팅된 MySQL 서버에 연결할 수 없음
- php : 최근 3개월 이후 기록이 없는 데이터베이스에서 선택
- 데이터 집계를 위한 AWK 대 MySQL
- php : LIKE를 사용하여 데이터베이스에서 알 수 없는 변수 선택
- mysql : 데이터베이스 내에서 문자열의 모든 인스턴스를 검색하고 바꾸는 방법은 무엇입니까?
외부 키 데이터베이스 간 경계를 갖는 것은 여러 가지 이유로 나쁜 생각입니다.
<올>스케일 아웃 : 데이터베이스를 동일한 인스턴스에 연결합니다. 데이터베이스를 새 인스턴스로 옮기는 것이 훨씬 더 복잡해지고 연결된 서버에서 실행되는 FK 제약 조건을 끝내고 싶지 않습니다. 안돼 하지 마라.
재해 복구 : 재해 복구 프로세스에는 상당한 위험이 있습니다. 백업이 정확히 같은 시점에 데이터를 캡처하고 있습니까? 그렇지 않으면 복원 후 관련 데이터가 일치하지 않을 위험이 있습니다. 몇 초의 차이만으로도 관계의 무결성이 무효화 될 수 있습니다.
다른 서브 시스템 : 각 데이터베이스에는 자원이 필요합니다. 일부는 명시 적이며 다른 것은 공유되지만 인스턴스에서 실행중인 각 데이터베이스에 대한 오버 헤드가 있습니다.
보안 : 각 데이터베이스에는 자체 보안 구현이 있습니다. 다른 로그인 및 액세스 권한. DATA 데이터베이스의 사용자가 USER 데이터베이스에 대한 값을 찾아야하는 경우 두 가지 모두에서 권한을 관리해야합니다. 데이터베이스를 기준으로 데이터를 분리한다고해서 보안이 해결되거나 향상되는 것은 아니며 더 복잡해집니다. 중요한 데이터의 보안을 관리하기위한 오버 헤드는 변경되지 않지만 데이터 위치가 아닌 데이터를 기반으로 사용자 및 권한을 검토하고 관리해야합니다. 단일 데이터베이스 내에서 정확히 동일한 보안 제어를 구현할 수 있어야합니다.