Firebird와 InterBase의 차이점
(c) Dmitry Kuzmenko, Alexey Kovyazin, IBSurgeon, 21.05.2017
역사적 개요
InterBase는 1985년에 만들어졌습니다: 최초의 상용 멀티버전 데이터베이스였습니다. 1999년 말, Borland는 InterBase 개발을 중단하기로 결정하고 InterBase Public License 하에 소스 코드를 공개했습니다. 이 코드는 복사되었고(라이선스가 허용함), Firebird가 탄생했습니다 - 버전 1.0부터 Firebird는 수십 년간의 InterBase 개발을 기반으로 한 프로덕션 준비 완료 데이터베이스입니다.
2000년 말, Borland는 InterBase로 폐쇄 소스 및 상용 라이선스(이전과 정확히 동일)로 돌아가 6.5 개발을 시작했습니다.
Firebird 1.0은 2002년에 출시되었으며, 많은 버그 수정과 DDL 및 DML 확장이 포함되었습니다. 활발한 Firebird 개발은 1.0 이후에도 계속되었고, 2004년에는 Firebird의 두 번째 주요 버전(v.1.5)이 출시되었습니다. Borland도 그 당시 새 버전(7.0 및 7.1)을 도입했습니다. Firebird 1.5와 InterBase 7.0은 데이터베이스 형식(ODS)과 핵심 기능 모두에서 호환되지 않았습니다. Firebird 2.0과 InterBase 7.0 이후로는 백업/복원을 통한 InterBase에서 Firebird로 또는 그 반대로의 마이그레이션이 불가능합니다.
그 이후로 Firebird와 InterBase의 차이는 더 커졌습니다.
현재 상황 (2017)
현재 InterBase와 Firebird 버전 간 마이그레이션의 유일한 방법은 SQL 스크립트(차이점 수동 수정 포함)를 통한 후, 이전 데이터베이스에서 새 데이터베이스로 데이터를 이전하는 것입니다. 그러나 InterBase에서 Firebird로의 마이그레이션은 트랜잭션 관리 원칙이 동일하므로 다른 DBMS로의 마이그레이션보다 여전히 쉽습니다.
우리는 다양한 InterBase 및 Firebird 버전에 대해 이러한 마이그레이션을 여러 번 수행했습니다 - 마이그레이션 서비스에 대한 자세한 내용은 여기에서 확인하세요 - 모두 잘 진행되었습니다.
아래에서 최신 버전인 Firebird 3.0과 InterBase 2017 간의 차이점 목록이 포함된 표를 찾을 수 있습니다.
| Firebird와 InterBase의 차이점 |
|---|
| 기능 |
| — |
| SQL (DML 및 DDL) |
| 커서 안정성 (올바른 INSERT FROM SELECT) |
| 스크롤 가능(양방향) 커서 |
| Execute Statement |
| 외부 Execute Statement (외부 Firebird 데이터베이스에 대한 쿼리) |
| 독립 트랜잭션 |
| 파생 테이블 (SELECT에서 SELECT) |
| 재귀 공통 테이블 식 (CTE) |
| 윈도우 및 통계 함수 |
| MERGE |
| insert/update/delete에 대한 RETURNING 절 |
| 연결/연결 해제 시 트리거 |
| 트랜잭션 시작/커밋/롤백 시 트리거 |
| DDL용 트리거 |
| SUBSTRING에 대한 Regexp 지원 |
| Boolean 데이터 타입 |
| BIGINT 데이터 타입 |
| PSQL 함수 |
| 외부 프로시저, 함수, 트리거 ( Java) |
| 중첩 프로시저 및 함수 |
| 결정적 함수 |
| SYSTEM, USER_SESSION 및 USER_TRANSACTION 네임스페이스의 컨텍스트 변수 |
| 패키지 (프로시저 및 함수) |
| 매개변수가 있는 예외 |
| IDENTITY 열 |
| RECREATE (CREATE 또는 ALTER의 조합) |
| UTF8 지원 |
| 유니코드 대소문자 구분 없는 검색 지원 |
| 식별자 길이 |
| COMPUTED BY 인덱스 (식 기반) |
| 아키텍처/관리 |
| SMP SuperServer (멀티코어 지원) |
| Classic (연결당 인스턴스) |
| SuperClassic |
| 다중 인스턴스 (다른 포트에서) |
| 데이터베이스 별칭 |
| 서버 인스턴스 간 재라우팅 |
| Write-ahead log (WAL) |
| 특정 시점 복구 |
| 복원 중 병렬 인덱스 생성 |
| 증분 백업 |
| 시스템 모니터링 테이블 |
| 64비트 클라이언트 및 서버 |
| 임베디드 버전 |
| Android용 임베디드 (모바일) |
| iOS용 임베디드 (모바일) |
| ChangeViews ( 무엇인가요?) |
| 와이어 압축 |
| 고지연 네트워크용 네트워크 프로토콜 개선 (인터넷을 통한 SQL 쿼리용) |
| 서버 수준 복제 (네이티브) |
| 추적 및 감사 |
| 온라인 데이터베이스 검증 |
| 보안 |
| 보안 데이터베이스 |
| 데이터베이스 내 사용자 |
| 데이터베이스 암호화 |
| 열 암호화 |
| 다중 암호화 키 |
| 와이어 암호화 |
| DDL 사용자 권한 |
| SQL을 통한 사용자 관리 |
| UDF 및 내장 함수 |
| 사용자 정의 함수 |
| SDF (UDF보다 빠른 서버 정의 함수) |
| 드라이버 및 클라이언트 라이브러리 지원 |
| Java |
| .NET |
| PHP |
| Python |
| ODBC |
| Node.JS/TypeScript |
| Golang |
| Yii2 |
| Ruby |
| Perl |
| Erlang |
| QT |
| 라이선스/가격 |
| 서버당 가격 (무제한 연결) |
| 커뮤니티 지원 |
| 서버당 전문 지원 |
| 복구, 모니터링, 추적/감사, 최적화, 네이티브 복제 도구 |
문의하기
질문이 있으신가요? 이메일로 주저하지 말고 문의하세요!