문제

자의 말하는 일을 하고 싶었는 응용 프로그램 쉽게 전환할 수 있는 DB at back-end.
나는 주로 생각하고의 SQL 서버는 기본 back-end,하지만 유연성으로 가서 다른 DB 엔진입니다.파이어와 PostGreSQL 것(내 간단한 위키백과 여행)에서 가장 일반적 w/SQL 서버(플러스 그들은 무료입니다).

얼마나 비슷한 것 DB 설정에 액세스,쿼리,등등....야에 대한 파이어,PostGreSQL,MS SQL Server?

도움이 되었습니까?

해결책

나는 일 중 하나에서 프로젝트가 절대적 요구 사항을 지원하는 많은 데이터베이스를 포함하여 적어도에 액세스,SQL Server Oracle 등이 있습니다.

그래서 나는 그것을 할 수 있습니다.대부분 DML(선택하고,업데이트 삽입,...)동일 확실히 우리는 없었다 거대한 문제는 그것을 만드는 작업의 모든 데이터베이-그냥 가끔 불만입니다.MySQL 이 예외는 그 시간에 그것은 단순히지 않았 할 수있는 충분합니다.

우리가 발견한 가장 차이 DDL 지만,오른쪽 건물(거리)는,그것은 어렵지 않았습니다.

는 것만이 발생한 우리에게 문제가 생성 독특한 id-자동 증가 비-표준입니다.Fortuantely 에서 데이터베이스의 약 40 테이블이 있었다 몇 가지 장소가 고유 ID 의 필요(좋은 DB 디자인).결국 우리가 생성 독특한 ID 코드에서 처리는 어떤 충돌을(모든 트랜잭션에).

그 일을 더 쉽게 만들기 때문에 우리가 피를 사용하여 자동 증가 ID 필드를 어렵게 생각한 독특한 키-하지만 더 나은 장기 실행됩니다.

다른 팁

불행히도 SQL은 공급자마다 크게 다릅니다. 많은 RDBMS에서 실행하는 가장 사소한 SQL을 제외한 모든 것을 쓰는 것은 거의 불가능합니다. 그리고 당신은 가장 낮은 공통 분모 영역에 속합니다. 추상화 계층을 사용하여 최소한 데이터베이스 (inc. Access, Sending Queries) 및 SQL 자체를 처리하거나 프로비라이더 당 SQL을 처리하는 ORM을 처리하는 것이 훨씬 낫습니다.

어떻게 다양한 방법을 살펴보고 싶다면 - 좋은 예는 자동 증가 IDS이며 마지막 삽입 된 레코드의 ID를 얻는 것입니다.

글쎄, Crud 물건은 어디에서나 동일해야하지만 복잡한 것을 구축하면 트리거와 저장 절차를 사용하고 싶을 것입니다. DBMS-Agnostic Application을 작성한다는 것은 일반적으로 대부분의 비즈니스 논리를 데이터베이스 외부에서 이동하는 것을 의미하므로 3 계층 응용 프로그램을 갖는 것은 IMHO입니다.

또는 추상화 레이어와 같이 작동하는 일부 래퍼 라이브러리를 사용할 수 있지만 아직 DBMS-ES 범위에서 작업을 올바르게 수행 할 수있는 것을 아직 보지 못했습니다. 물론, 그것은 또한 당신이 사용하는 프로그래밍 언어에 따라 다릅니다.

다른 답변에서 지적한 바와 같이, 기본 선택/삽입물을 넘어 서면 DBM은 크게 다릅니다 (때로는 때로는).

또한 여러 DBM에 걸쳐 호환성을 유지해야합니다. 제 생각에는 가장 좋은 방법은 일반적으로 일종의 호환성 계층을 사용하는 것입니다. 사내 DB 추상화 라이브러리가 있지만 몇 가지 도구가 있습니다.

특히, 인기있는 Orms (최대 절전 모드, nhibernate 등)를 살펴 보는 것이 비용을 지불 할 수 있습니다. 그들은 일반적으로 DB 독립성을 일종의 부작용으로 제공합니다. 최소한 Hibernate에는 사용중인 DBMS의 SQL로 자동으로 번역되는 특수 쿼리 언어가 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top