문제

Delphi에서 데스크탑 앱을 만들고 있으며 임베디드 데이터베이스를 사용할 계획입니다. Disqlite3 라이브러리와 함께 SQLITE3을 사용하여 프로젝트를 시작했습니다. 작동하지만 문서는 약간 가벼워 보입니다. 나는 최근에 Firebird (예, 한동안 창문을 벗어 났음)를 발견했으며 몇 가지 매력적인 기능과 지원이있는 것 같습니다.

각 내장 DB의 장단점은 무엇입니까? 크기는 지원과 자원뿐만 아니라 중요합니다. 당신은 무엇을 사용했고 그 이유는 무엇입니까?

도움이 되었습니까?

해결책

나는 몇 달 동안 Feeddemon에서 sqlite (disqlite3를 통해)를 사용해 왔으며, 그것을 강력히 추천합니다 - 그것은 매우 빠르고 안정적이었습니다. Javier가 말했듯이 라이브러리의 문서는 얇을 수 있지만 SQLite 자체의 문서는 매우 좋습니다.

다른 팁

나는 Firebird 2.1이 포함되어 있고 그것에 매우 만족합니다. 데이터베이스 크기가 실질적으로 무제한 (> 4GB 데이터베이스로 테스트되고 작동)이며 데이터베이스 파일이 Firebird Server와 호환되었다는 사실을 좋아합니다. 데이터베이스 관리 및 검사에 표준 도구를 사용할 수 있습니다. 배포는 EXE 폴더에 몇 가지 파일을 삭제하는 것으로 구성됩니다.

여러 프로그램의 동시 액세스는 지원되지 않지만 여러 스레드의 동시 액세스는 (주어진 순간에 하나의 'Connect'조작 만 진행되는 한)입니다.

나는 많은 프로젝트에 sqlite3을 사용했지만 (그러나 c/c ++ 및 objective-c에서) 사용했습니다. 데이터베이스는 단일 파일에 매우 작습니다.

Coredata와 iPhone에서 직접 지원되기 때문에 Mac 개발자가 선택한 DB입니다. 따라서 큰 사용자 기반이 있습니다 (다른 모든 사용자는 말할 것도 없습니다).

봅시다, 빠른 비교 :

sqlite :

  • 데이터베이스의 동적 타이핑
  • 크로스 플랫폼 파일
  • Windows, Linux, Mac 등에서 실행됩니다.
  • 공개 도메인
  • 거래를 지원합니다
  • 파일 시스템 보안에 의존하고 자체 보안이 포함되지 않습니다.

파이어 버드 내장 :

  • 데이터베이스에서 강력한 타이핑
    • 모든 SQL 데이터 유형이 지원되는 것은 아닙니다
  • 크로스 플랫폼 파일
    • 파이어 버드 내장은 창문에서만 실행됩니다
    • Firebird 내장의 파일은 전체 서버 버전과 동일한 형식입니다.
    • Firebird 내장의 파일은 사용하기 위해 Windows가 아닌 서버에 복사 할 수 있습니다.
  • 수정 된 MPL에 따라 사용할 수 있습니다 ( "우리는 무엇입니까?
  • 거래, 트리거 등을 지원합니다.

MySQL 내장 :

  • SQL 기능에 대한 지원은 파일 형식에 따라 다릅니다
  • (IIRC) 크로스 플랫폼 파일
  • 로열티를 지불하지 않는 한 GPL
  • Windows, Linux, Mac에서 실행됩니다
  • 오픈 소스 군중에게 엄청나게 인기가 있습니다

임베디드 데이터베이스조차도 강점과 약점이 있습니다. 당신이 결정하기 위해하고있는 일에 대해 그 강점과 약점을 평가해야합니다.

나는 사용했다 DBISAM 많은 프로젝트에서. 외부 DLL이 필요없이 완전히 내장되어 있습니다. 당신이 나열한 다른 사람들과는 달리 상업적입니다. 그래도 많은 훌륭한 기능과 잘 문서화되고 지원됩니다. a 후임 그래도 아직 시도하지 않았다.

Firebird Embedded는 코드 변경이 없으면 데이터베이스가 포함 된 단일 사용자 Delphi 앱은 고급 기능 (예 : 저장 프로 시저, 트리거, 뷰, 뷰 등)을 희생하지 않고 다중 사용자 서버 기반 배포로 마이그레이션 할 수 있기 때문입니다. 등.). 그리고 그것의 진정한 무료 데이터베이스이며 프로세스에서 코드를 GPL로하지 않습니다.

데이터베이스 및 Delphi로 작업 할 때는 AlyDAC를 사용하는 것이 좋습니다. 그러면 FB 또는 SQLITE를 원활하게 타겟팅하도록 선택할 수 있습니다.

내 임베디드 앱의 FB가 선호합니다. 톰

Sybase의 Advantage Database Server를 사용하지만 R & D 관리자이기도 하므로이 게시물은 편향되어 있습니다. :)

Win32 VCL 및 VCL.NET 모두에 대한 기본 DELPHI TTABLE 및 TQUERY 구성 요소가 있습니다. SQL 지원 외에도 직접 테이블 액세스는 다른 많은 델파이 제품들 사이에서 유리한 이점을 제공합니다. Advantage는 대형 테이블을 지원하고 (레코드 수, 20 억에만 제한됨) 무료 로컬 엔진이 있으며 개발 PC 및 클라이언트/서버 기능이 필요하지 않은 소규모 고객 사이트에 좋습니다. 단일 연결 속성으로 클라이언트/서버로 전환하십시오. 다른 변경 사항은 없습니다.

우리는 수많은 클라이언트를 보유하고 있으므로 Delphi 외부의 데이터에 액세스하는 것도 매우 쉽습니다 (.NET Data Provider, ODBC, OLE DB, PHP, PERL, JDBC 등).

주요 제품 웹 사이트 : http://www.advantagedatabase.com개발자 웹 사이트 : http://devzone.advantagedatabase.com

실제로 필요한 것에 달려 있습니다. 단일 사용자 애플리케이션의 경우 Firebird 내장 또는 SQLite가 아마도 최상의 선택 일 것입니다 (그리고 가격이 맞습니다). 다른 한편으로, 다수의 여러 사용자를 지원 해야하는 경우 내장 버전 대신 일반 파이어 버드를 사용해야 할 것입니다 (서버는 설치하기가 간단하므로 여기에 많은 문제가 없음).

그리고 중간 정도의 멀티 사용자 응용 프로그램을 위해서 사이에 무언가가 필요한 경우 플랫 데이터베이스 중 하나가 더 좋습니다. 나는 그것을 발견했다 Componentace의 절대 데이터베이스 DBISAM, NEXUSDB 또는 VistADB보다 내 필요에 대한 더 나은 선택.

그것은 비교적 작은 발자국 (DLL 없음)을 남기고, 단일 파일 DB (나에게 필수), 유니 코드, 블로브 압축, 크리 팅 및 기술 한계가 평평한 데이터베이스에 인상적인 것처럼 보입니다. 또한, 필요할 때 몇 가지 경우에도 지원이 좋았습니다.

단점을 위해, 나는 그것이 중첩 된 거래를 지원하지 않는다는 것을 알았지 만 그 외에는 아무런 문제가 없었습니다.

크기는 Sqlite를 능가하는 것이 없습니다.

문서 부족에 대해 언급 할 때 Disqlite3의 문서라고 생각합니다. 그만큼 sqlite 문서 아주 완전합니다

NexusDB를 살펴보십시오. 과거에 매우 성공적으로 사용했습니다.

(내장) Firebird의 문제점은 데이터베이스가 네트워크 드라이브에 상주 할 수 없다는 것입니다. 또한 읽기 전용 드라이브 (CD/DVD)에 데이터베이스가있는 것은 어렵습니다.

이러한 제한 사항에 대한 일부 해킹은 Delphi Wiki를 참조하십시오.http://delphi.wikia.com/wiki/firebird_tipps

NEXUSDB는 임베디드에서 전체 클라이언트 / 서버 / 리모컨에 이르기까지 전체 범위를 제공합니다. 또한 SQL2003을 준수합니다. 나는 몇 가지 프로젝트에서 그것을 사용하고 있으며, 지금까지 매우 기뻐하며, 그것이 광범위한 "스케일"에서 작동 할 수 있다는 사실은 큰 장점입니다 (스케일 업 앱에 대해 다른 DB를 배울 필요가 없습니다. 등).

이 임베디드 데이터베이스 비교를보십시오. http://sql-db.cz.cc/, 도움이 될 수 있습니다. Advance, DBISAM, Firebird, MS SQL Server 등의 AboveMentiented 제품이 대부분 제공됩니다 : Accuracer, Apollo, ExpatedB, NexusDB, TurboDB.

나는 구성 요소 에이스의 절대 DB에 부분적입니다. 상용 제품 ($)이지만 견고하고 사용하기 쉽고 작은 발자국이며 잘 문서화되어 있습니다. 거대한 다중 사용자 애플리케이션을 찾고 있다면, 이것은 갈 길이 아니지만, 다중 사용자 요구가 가볍거나 존재하지 않는 경우 이것은 확실한 옵션입니다.

SQL Server Express와 ADO 구성 요소를 사용하고 있습니다. 잘 작동합니다. CommandLine으로 SQL Server Express 설치를 실행하여 사용자의 복잡성을 숨길 수 있습니다. 파일 이름으로로드하는 데이터베이스를 배포 할 수도 있습니다. 수백만의 SQL Server 사용자가 있으므로 Intertubes에서 모든 문제에 대한 솔루션을 쉽게 찾을 수 있습니다 .-)

Delphi 응용 프로그램을위한 빠른 데이터베이스 패키지를 찾기 위해 WebSearch를 수행했습니다. 외부 DLL이나 라이브러리가 필요하지 않은 실행 파일에 완전히 포함되기를 원했습니다. 나는 원래 Aidaim에 의해 Accuracer를 발견했습니다. 그들은 게시했습니다 그들의 데이터베이스가 얼마나 빨리 있었고 심지어 비교를했는지 다른 유사한 패키지와 함께 요점을“증명”합니다.

나는 그들의 주장을 믿고 싶었지만 다른 패키지의 타이밍을 찾기 위해 웹을 조금 더 검색 할 것이라고 생각했습니다. 나는 발견에 매우 놀랐다 델파이 토론 포럼의 게시물 사람이 어떤 데이터베이스를 사용할 것인지 물었고 14 가지 제안이있었습니다. 응답자 중 한 명이 자신의 타이밍 비교를 수행했으며 정확한 비교 페이지에서 (편리하게) 떠난 다른 여러 사람들과 비교할 때 정확한 계산기가 매우 느리다는 것을 알게되었습니다.

게시물과 저의 추가 후속 웹 리서치를 통해 나를 기대하게되었습니다. disqlite3, 제품 기반 제품 오픈 소스 SQLITE 프로그램, 그러나 델파이에서 매우 빨리 일할 수있는 개선 사항, 매우 작은 오버 헤드와 명령 기반 호출과 함께 좋아합니다. 현재는 개발 중이며 곧 공식 델파이 2009 버전을 보유 할 것입니다. 그러나 현재 버전은 D2009에 따라 작동 할 것입니다.

ADDENUM : DISQLITE3 버전 2.0.0은 11 월 17 일 출시 된 D2009를 지원합니다.

MS Access가 비교적 쓰레기 DB라는 것을 알고 있지만 (여기에서 화염에서 격추 될 것으로 예상), 작은 데이터 만 필요하면 MS Office가 사용되면 이점이있을 수 있습니다. 저에게는 과학 코드의 일반적인 접근 방식 인 CSV 파일보다 유연성이 더 많은 프로그램 데이터를 저장하는 방법이었습니다.

ADO & ODBC 드라이버를 사용하여 MS Office를 설치하지 않고 Delphi 코드에서 액세스 DB를 만들 수 있습니다 (테이블이 채워질 수있는 초기 .ACCDB 파일이 채워져있는 것이 필요할 수 있습니다.이 세부 사항을 기억할 수 없습니다. 라이센스 상황은 확실하지 않습니다. 이것을하고 있습니다.

.ACCDB 확장은 다른 것으로 변경 될 수 있으며 파일 암호가 보호 된 (제한된 정도)로 변경 될 수 있으므로 원하는 경우 사용자에게 즉시 액세스 할 수는 없습니다. 몇몇 상업 개발자 가이 방법을 수행하고 직접 복사 한 것을 알고 있습니다. SQLITE보다 설정하기가 더 쉽다는 것을 알았지 만 이미 과거에 Ado & Access를 사용했기 때문일 수 있습니다.

임베디드가 절대적인 것이라면 DBISAM을보십시오.

KBMemtable은 좋은 후보입니다. 메모리, 빠른 멀티 스레딩에서 실행됩니다. 예전에는 무료였습니다.

구성 요소 4Developers

나는 다른 경우에 dbisam과 kbmemtable을 사용했습니다.

DBISAM에 대해 내가 좋아하는 것은 훌륭한 기능을 가지고 있으며 일반적으로 매우 신뢰할 수 있다는 것입니다. 대형 데이터베이스, 전체 텍스트 검색, 읽기 전용 모드, CGI 및 기타 여러 상황에서 사용했습니다.

그러나 KBMemtable 또는 SQLITE 기반 구성 요소에 비해 상당히 큽니다. 상황에 따라 데이터베이스 당 단일 파일을 가질 수 없습니다. 이는 큰 단점입니다.

KBMemtable은 작고 소량의 데이터에 좋습니다. 메모리에서 실행되기 때문에 물론 소량의 데이터 여야합니다.

데스크탑 앱 몇 개를 찍은 다른 옵션 중 하나는 Twriter/Treader를 사용하여 데이터를 직접/객체 계층으로 직접 덤프하는 것입니다. 이것은 지금까지 가장 작은 옵션이며 데이터베이스 사용에 비해 터무니없이 빠릅니다. 데이터 파일도 작습니다.

그러나 모든 종류의 단점이 있습니다. 필드를 추가/변경하고 싶을 때 버전 작성을 코딩해야합니다. 메모리가 아닌 경우 더욱 복잡하지 않고 다중 사용자 지원이 전혀 지원되지 않습니다.

Firebird Embedded도 우리의 #1 선택입니다. 그리고 스위트 통합 인터베이스 v2.0 그것으로. 훌륭하고 안정적인 솔루션!

나는 ScImoredB를 사용했습니다. 로열티를 무료로 제공 할 때 기발한 것이 있으며 데이터 유형과 일부 설치 문제가 있습니다. 이것은 C# 프로젝트에있었습니다.

Firebird 끝까지. 모든 것을 잘 수행하고 지금까지 버전 2.1은 매우 견고합니다.

Firebird는 언젠가는 다중 사용자에게 줄을 올릴 수있는 기회를 제공하거나 동시성이 필요한 경우 (응용 프로그램이 멀티 스레드가있는 경우).

SQLITE는 단일 사용자 액세스 만 필요하면 성능, 편의성, SQL 지원 또는 안정성이든 다른 측면에서 다른 데이터베이스에 근접하지 않으면 매우 타의 추종을 불허합니다.

Firebird는 실제로 끔찍하고 작은 발자국을 가지고 있으므로 내장을 사용할 수 있으며 많은 사용자에게 상향 조정할 수 있으며 유니 코드를 잘 수행 할 수 있습니다. Delphi 2009 및 Fib Plus (2009 및 Unicode의 버전)와 함께 Devart 구성 요소를 사용합니다. 아직 준비가 안 돼요)

흠, 아무도 BDE를 추천하지 않았다 - 나는 그것이 왜 그런지 궁금하다 ;-)

BlackfishSQL은 또 다른 가능성이지만 아직 깊이 테스트하지는 않았습니다.

10 일 동안 20 초마다 5 개의 필드 데이터를 기록 해야하는 데이터베이스가 있습니다. 3 필드는 정수, 1 필드는 이중 (시간), 1 필드는 문자열 [5]입니다.

내 구성 요소 때문에 여전히 Delphi6 SRV2를 사용하고 있습니다. 최신 Delphi 버전은 구성 요소에 끔찍하여 구성 요소 라이브러리를 재건하기 위해 수천 달러의 돈을 소비해야합니다. 따라서 델파이 (Delphi)는 여전히 델파이 버전의 버전이 많은 문제를 제기하지 않는 실제 상업 응용 프로그램에 여전히 가장 적합합니다. USB 또는 Comport Readings와 같은 많은 시점에서 ... 그들은 이전 버전이 시장에 나오지 않기 전에 새로운 것을 출시합니다.

43200 레코드가있는 동안 테이블을 응용 프로그램에 배치하기 때문에 테이블에 43200 레코드를 추가하는 Delphi6과 함께 코드를 설정했습니다. dbchart의 모든 데이터를 보여줄 것입니다.

테스트 결과는 43200 레코드로 삽입 명령으로 테이블에 채워진 데이터베이스 아래입니다.

dbisam = 34 초,
avelatedb = 11 초,
Absolutedb = 45 초,
sqllite = 32 분,
파이어 버드 = 12 분,
MSSQL12 LocalDB = 28 분,
쉬운 테이블 = 8 분,
bde = 차단,

나는 Oracle, Blackfish, Sysbase, NexsusDB 등을 테스트하지 않았지만 매우 느린 것 같습니다. 나는 DBCHART와 연결했으며 ExpatedB와 AbsolutedB만이 7 ~ 10 초와 같은 제외 시간에 dbchart에 43200 개의 레코드를로드했습니다. 기타 모두 몇 분이 걸렸습니다. 따라서 느린 데이터베이스는 실제 작업에서 성공하기 위해 항상 코딩 트릭이 필요합니다 ..

불행히도 서버 기반 데이터베이스가 항상 느려진다는 명령을 찾아 검색 속도를 테스트했습니다.

MSSQL과 SQLLITE3은 Delphi를 관리하기가 매우 어렵습니다.

이것들은 내 테스트 결과입니다
결국 나는 Absolutedb, dbisam 및 Elevate를 사용하기로 결정했습니다. 나는 나머지를 PC에서 버렸다.

Elevate Software는 관리하기 위해 런타임에 추가 코드가 필요한 ReCNO 기능을 지원하지 않습니다. 이로 인해 데이터베이스가 느리게 느리게됩니다. 다른 버그는 Elevate 소프트웨어가 Autoinc 필드입니다. 그것을 재설정 할 방법이 없습니다. 따라서 Elevat 소프트웨어는 가장 빠른 데이터베이스라도 선택하지 않았습니다. 그들은 많은 좋은 기능을 말하지만 실제로 우리가 실제로 사용하는 수는 몇 개입니다. 그들은 방금 지원되지 않는 가장 중요한 기능을 남겼지 만 많은 불필요한 기능을 고정했습니다. 그리고 8 년 이래로 어떤 이점도없는 것 같습니다.

자신의 눈으로보고 싶다면 시도해보세요 ..

나는 이제 두 개의 절대 DB 또는 DBISAM4 사이를 생각하고 있습니다.

임베디드 데이터베이스와 관련하여 첫 번째 질문은 다음과 같습니다. Multiuser입니까? 실제로, 여러 연결 (읽기 및 쓰기)을 허용하지 않는 데이터베이스가 필요한 사람은 누구입니까? 나는 (강렬하게) 언급 된 모든 데이터베이스를 시도했으며 실제로는 실제로 작동하는 방식으로 기능하는 데이터베이스 만 발견했습니다. 그리고 그것은 정확합니다. Accuracer의 유일한 동정은 Three Man 밴드와 만성적 인 적절한 지원이 부족하다는 것입니다. 그것은 또한 우리가 몇 년 동안 실제 특징을 보지 못했기 때문에 주로 개발에서 정적입니다. 한 사람만이 실제로 그것을 개발하기 때문에 놀라운 것은 아닙니다. 그들은 오래된 명성에 살고있는 것 같습니다. 사용자는 (보통 10 년 된 의견)를 칭찬합니다. 단일 사용자 경험을 위해서는 절대 데이터베이스를 권장합니다. 주요 플레이어는 Microsoft에서 SQL Server를 추천합니다. 오라클은 부풀어가되었으며 천천히 죽어 가고 있습니다.

추신 PS 정확한 정확한 것은 임베디드 데이터베이스가 완전한 블로우 서버처럼 작동한다는 것입니다. 나머지는 정상적으로 기능하는 동안 사용중인 경우 현재 레코드 만 잠글 수 있습니다. 좋은 데이터베이스. 동정은 정체됩니다.

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