2010-09-21 26 views
11

Tôi hiện đang sử dụng DB2 để thực hiện các kiểm tra đơn vị, nhưng đôi khi nó khá chậm. Tôi sẽ cần một cơ sở dữ liệu trong bộ nhớ tốt sẽ bao gồm tất cả các tính năng của DB2. Loại cơ sở dữ liệu trong bộ nhớ này tồn tại hay chúng chỉ cho phép tính năng SQL chuẩn?Có cơ sở dữ liệu trong bộ nhớ tốt hoạt động như DB2

Cảm ơn bạn.

Cơ sở dữ liệu EDIT DB2 là trên một máy chủ từ xa, vì vậy tôi sẽ cần một giải pháp để tái tạo giản đồ của cơ sở dữ liệu trên một địa phương cơ sở dữ liệu trong bộ nhớ để tăng tốc độ kiểm tra.

+0

Mỗi cơ sở dữ liệu là khác nhau. Không có cơ sở dữ liệu nào khác ngoài DB2 - tất cả đều có tất cả các tính năng của DB2. Bạn không thể có "tất cả tính năng của DB2" mà không sử dụng DB2. ** Tính năng ** chính xác nào bạn cần? –

+0

Có nhiều ứng dụng đang sử dụng nó và ghi lại tất cả truy vấn SQL trong ứng dụng đó sẽ gần như không thể. – Drahakar

+0

nếu bạn không biết bạn cần những tính năng nào, bạn không thể thay thế nó, phải không? Nếu bạn không biết tất cả các tính năng thì không có cơ sở dữ liệu nào có thể được sử dụng ngoại trừ DB2. –

Trả lời

12

Tôi sẽ cần một cơ sở dữ liệu trong bộ nhớ tốt có thể bao gồm tất cả tính năng của DB2.

Derby (cũ Cloudscape) là ngôn ngữ của DB2 tương thích. Và nó có một chế độ bộ nhớ.

Cũng có thể xem xét H2 (với DB2 compatibility mode). Nhưng ngay cả khi H2 sẽ nhanh hơn, tôi sẽ xem xét Derby trong trường hợp của bạn.

+0

Derby không bao giờ hỗ trợ câu lệnh Stored Procedure, do đó nó không tương thích với DB2. – Kishore

1

Tại sao không sử dụng tmpfs (Unix) hoặc bất kỳ giải pháp ramdrive thông thường nào cho Windows? Hoặc, bạn có thể có ổ SSD nhanh.

+0

Cơ sở dữ liệu nằm trên máy chủ từ xa. Vì vậy, trừ khi tôi cài đặt một máy chủ DB2 trên máy trạm của tôi, điều này không thể là một lựa chọn. – Drahakar

0

Nếu bạn tạo vùng đệm đủ rộng, cơ sở dữ liệu DB2 của bạn cũng sẽ nằm trong bộ nhớ.

1

Như đã đề cập trong Pascal, Derby gần như giống hệt cú pháp với DB2. Đã thử nó cho cùng một điều trong khi trở lại, chúng tôi đã có một vấn đề với Derby không hỗ trợ trình tự, nhưng các giao thức kết nối là giống hệt nhau. Ví dụ: bạn có thể sử dụng trình điều khiển JDBC DB2 để kết nối với cơ sở dữ liệu Derby.

Nếu ứng dụng của bạn tóm tắt kết nối cơ sở dữ liệu của bạn với Hibernate hoặc NHibernate (nếu .Net) sử dụng H2 hoặc HSQLDB cũng có thể làm việc cho các bài kiểm tra đơn vị giả sử bạn không dựa vào các thủ tục được lưu trữ và tương tự.

Một công cụ khác giúp tính năng di chuyển lược đồ nhắm mục tiêu nhiều DB là http://liquibase.org. Đối với một xây dựng thử nghiệm, bạn làm cho nó xây dựng bộ nhớ trong DB của bạn và cho một triển khai bạn làm cho nó xây dựng cơ sở dữ liệu DB2 của bạn hoặc tạo ra kịch bản di trú. Nó sẽ xây dựng cơ sở dữ liệu với lược đồ chính xác và cung cấp các điều kiện di trú có điều kiện (ví dụ như tài trợ không có sẵn trong HSQL, do đó bạn chạy tập thay đổi chỉ cho DB2).

4

Tôi nghĩ tùy chọn đơn giản nhất sẽ là --- DB2.

Tải xuống phiên bản expressbie express và cài đặt nó trên PC của bạn. Tốc độ làm chậm của bạn gần như chắc chắn sẽ làm giảm tắc nghẽn mạng và hạn chế sử dụng máy khách DB2, việc cài đặt cục bộ sẽ loại bỏ chúng.

Điều tốt nhất tiếp theo sẽ là JavaDB (thường được gọi là Derby!). Tương tự nhưng không hoàn toàn giống với DB2.

Sử dụng bất kỳ cơ sở dữ liệu nào khác sẽ khiến bạn rơi vào tình trạng không được hỗ trợ, SQL không tương thích, các tên khác nhau cho cùng chức năng, các chức năng khác nhau có cùng tên hàm etc.etc.

0

Hai cơ sở dữ liệu trong bộ nhớ có thể là: - lầnTừ Oracle. - SolidDB từ IBM.Cái này có thể gửi cho giao dịch trở lại DB2, nhưng các truy vấn sẽ có một buổi biểu diễn thực sự cao

Để biết thêm thông tin về solidDB http://www-01.ibm.com/software/data/soliddb/

Các vấn đề liên quan