자바 임베디드 데이터베이스 비교
재정 관리를위한 작은 (Java) 애플리케이션을 개발하려고합니다. 임베디드 데이터베이스를 사용해야한다고 생각하지만이 문제에 대한 경험이 없습니다. 사용 가능한 일부 제품 을 살펴 보려고했지만 어떤 제품 이 나에게 더 적합한 지 결정할 수 없습니다. H2 , HSQLDB , Derby 및 Berkeley DB 가 좋은 후보 인 것 같지만 서로 어떻게 비교되는지는 모르겠습니다. 그것들을 비교하고 어떤 것을 사용할지 결정하는 데 도움을 주셔서 감사합니다.
DBMS에서 제공하는 API를 사용하도록 권장하지 않는 한 내 애플리케이션에 Hibernate를 사용할 계획이지만 SQL 브라우징 도구 (스키마 수정 및 데이터 변경)를 사용하여 데이터베이스를 쉽게 편집 할 수있는 기능도 갖고 싶습니다.
감사합니다.
어느 한 쪽
- HSQLDB -OpenOffice에서 사용되며 테스트되었으며 안정적입니다. 사용하기 쉽습니다. db-data를 편집하려면 파일을 열고 insert 문을 편집하면됩니다.
또는
- H2- 더 빠르다고 말함 (원래 hsqldb를 설계 한 개발자에 의해)
어느 것을 사용 하느냐는 성능과 안정성에 따라 달라집니다.
H2 개발자는 멋진 성능 평가를 내놓았습니다 :
http://www.h2database.com/html/performance.html
거의 모든 임베디드 데이터베이스 요구 사항에 Apache Derby 를 사용 합니다. Derby를 기반으로 한 Sun의 Java DB를 사용할 수도 있지만 Derby의 최신 버전이 훨씬 더 최신 버전입니다. 상용, 기본 데이터베이스가 지원하는 많은 옵션을 지원하지만 훨씬 작고 포함하기 쉽습니다. 문제가없는 백만 개 이상의 레코드가있는 데이터베이스 테이블이 있습니다.
저는 약 3 년 전에 HSQLDB와 Hypersonic을 사용했습니다. 당시에는 몇 가지 주요 성능 문제가 있으며 이러한 문제로 인해 Derby로 전환했습니다. Derby는 Apache의 인큐베이터에있을 때도 견고했습니다.
내 프로젝트 중 하나에서 Java 임베디드 데이터베이스를 사용해야했고 각 데이터베이스의 장단점을 이해하는 많은 연구를 수행했습니다. 인기있는 임베디드 자바 데이터베이스 (H2, HSQLDB, Derby, ObjectDB, Neo4j, OrientDB)의 장단점을 나열하는 블로그를 작성했습니다. 살펴볼 수 있습니다. 내 요구 사항에 가장 적합하다고 생각하여 H2를 선택했습니다. 블로그 링크 : http://sayrohan.blogspot.in/2012/12/choosing-light-weight-java-database.html 도움이되기를 바랍니다.
나는 H2와 함께 할 것입니다. 성능은 Derby보다 훨씬 낫습니다. 자세한 내용은 http://www.h2database.com/html/performance.html 을 참조하십시오.
HSQLDB 는 좋은 후보입니다 (오픈 오피스에서 사용된다는 사실은 여러분 중 일부를 설득 할 수 있습니다).하지만 이러한 소규모 개인 응용 프로그램의 경우 (전통적인 관계형 데이터베이스 대신) 개체 데이터베이스를 사용하지 않는 이유는 무엇입니까?
내 프로젝트 중 하나에서 DB4O 를 사용 했는데 매우 만족합니다. 객체 지향이기 때문에 전체 Hibernate 레이어가 필요하지 않으며 객체를 직접 삽입 / 업데이트 / 삭제 / 쿼리 할 수 있습니다! 또한 스키마에 대해 걱정할 필요가 없습니다. 객체를 직접 작업하면 DB4O가 나머지 작업을 수행합니다!
이 새로운 유형의 데이터베이스에 익숙해지는 데 시간이 걸릴 수 있다는 데 동의하지만 DB40 자습서 를 확인하여 DB 작업이 얼마나 쉬운 지 확인하십시오!
편집 : 주석에서 말했듯이 DB4O는 최신 버전의 클래스를 자동으로 처리합니다. 또한 응용 프로그램 외부에서 데이터베이스를 찾아보고 업데이트하는 도구는 http://code.google.com/p/db4o-om/에서 사용할 수 있습니다.
Java DB (Sun의 Apache Derby 배포판)가 이제 JDK 6 에서 제공 됩니다 !
나는 Jason Cohen과 같은 것을하고 싶었고 이것이 JDK 배포판에서 가장 쉬운 방법이라고 생각했습니다 (지난주에 내 앱의 요구 사항이되었습니다). 아니면 그냥 게으르다.
우리는 프로덕션에서 HSQLDB를 애플리케이션의 "구성 없음"옵션으로 사용합니다. 사람들이 실제 데이터베이스를 설정하는 번거 로움없이 시험을 볼 수 있습니다.
그러나 정상적인 사용 에는 지원 하지 않습니다 . 그 이유는 다음과 같습니다.
- 데이터 크기에 비례하여 느려집니다.
- 앱 외부에서 액세스하기 어렵습니다 (예 : 맞춤형 보고서).
- 트랜잭션 / 디스크 동기화는 제대로하기 어렵 기 때문에 데이터를 잃기 쉽습니다.
적어도 (2)와 (3)의 경우, 주위에 방법이 있지만 어렵습니다. 예를 들어 MySQL을 설치하는 것이 훨씬 쉽습니다.
neo4j 는 다음과 같습니다.
테이블이 아닌 그래프로 구조화 된 데이터를 저장하는 임베디드 디스크 기반의 완전 트랜잭션 Java 지속성 엔진
아직 시도해 보지 못했지만 매우 유망 해 보입니다. 이것은 SQL 데이터베이스가 아닙니다. 개체 그래프가 유지되므로 기존 앱에는 적합하지 않을 수 있습니다.
좋은 비교 도구는 http://www.jpab.org/All/All/All.html 에서 찾을 수 있습니다 .
일대일 DBMS / JPA 비교도 확인하십시오.
저는 .Net과 Java 모두에 대한 DB4O 의 열렬한 팬입니다 .
초기 릴리스 이후 성능이 훨씬 좋아졌습니다. 라이선스 모델도 나쁘지 않습니다. 특히 개체 쿼리에 사용할 수있는 옵션이 마음에 듭니다. 예제 별 쿼리는 매우 강력하고 익숙해지기 쉽습니다.
이를 평가하기 위해 어떤 기준을 사용 하시겠습니까? 아직 모른다면 지금 당장 결정할 필요가 없습니다. 적절한 래퍼, 데이터 액세스 개체 등을 제공하는 등 가능한 한 데이터베이스 구현과 무관하게 애플리케이션을 만들고, 모든 사실을 파악하고 결정해야 할 때이 결정을 내립니다.
If you're using relational databases and SQL then the above shouldn't be too hard (using JDBC etc). Make sure you have plenty of surrounding tests so that when you want to switch between databases, you can determine that your application's functionality remains the same.
I ran into the same issue some time ago. I didn't know which database to go for, so my first solution used Derby (or HSQLDB?), and I was later able to switch to HSQLDB (or Derby ? Can't remember which solution worked) once I'd determined where I had issues (relating to performance) and which solution would really work for me.
Most things have been said already, but I can just add that I've used HSQL, Derby and Berkely DB in a few of my pet projects and they all worked just fine. So I don't think it really matters much to be honest. One thing worth mentioning is that HSQL saves itself as a text file with SQL statements which is quite good. Makes it really easy for when you are developing to do tests and setup data quickly. Can also do quick edits if needed. Guess you could easily transfer all that to any database if you ever need to change as well :)
HSQLDB may cause problems for large applications, its not quite that stable.
The best I've heard (not first hand experience however) is berkleyDB. But unless you opensource it, it will cost you an arm and a leg to use due to licensing...see this http://www.oracle.com/technology/software/products/berkeley-db/htdocs/licensing.html for details.
ps. berkleyDB is not a relational database in case you didnt know.
I have used Derby and i really hate it's data type conversion functions, especially date/time functions. (Number Type)<--> Varchar conversion it's a pain.
So that if you plan use data type conversions in your DB statements consider the use of othe embedded DB, i learn it too late.
Latest Derby Version data type conversions
I personally favor HSQLDB, but mostly because it was the first I tried.
H2 is said to be faster and provides a nicer GUI frontend (which is generic and works with any JDBC driver, by the way).
At least HSQLDB, H2 and Derby provide server modes which is great for development, because you can access the DB with your application and some tool at the same time (which embedded mode usually doesn't allow).
I guess I'm a little late (a lot late;-)) to this post, but I'd like to add Perst, an open source, object-oriented embedded database for Java &.NET. for your consideration. Perst is an open source / dual license embedded database for Java. The distribution is compatible with Google's Android platform, and also includes Perst Lite for Java ME. We've even built an Android benchmark and produced a whitepaper on the subject...you can take a look here: http://www.mcobject.com/index.cfm?fuseaction=download&pageid=581§ionid=133
All the best, Chris
If I am correct H2 is from the same guys who wrote HSQLDB. Its a lot better if you trust the benchmarks on their site. Also, there is some notion that sun community jumped too quickly into Derby.
I realize you mentioned SQL browsing, but everything else in your question makes me want to suggest you also consider DB4O, which is a great, simple object DB.
참고URL : https://stackoverflow.com/questions/462923/java-embedded-databases-comparison
'program story' 카테고리의 다른 글
특정 문자열로 시작하는 모든 클래스 제거 (0) | 2020.08.23 |
---|---|
C # 데스크톱 애플리케이션에 포함하는 데 가장 적합한 스크립팅 언어는 무엇입니까? (0) | 2020.08.23 |
내용에 많은 파일이있는 두 폴더 비교 (0) | 2020.08.23 |
자바의 술어 (0) | 2020.08.23 |
세로 스크롤 막대가 나타나도록 테이블의 높이를 지정하는 방법은 무엇입니까? (0) | 2020.08.23 |