2010-07-29 27 views
7

Cách tiếp cận tốt nhất để phiên bản toàn bộ cơ sở dữ liệu của tôi là gì?Lấy cơ sở dữ liệu của tôi trong Phiên bản điều khiển bằng cách sử dụng DVCS [Mercurial]

Tạo tệp cho từng đối tượng cơ sở dữ liệu (bảng, dạng xem, thủ tục ..) hoặc thay vì có một tệp cho tất cả các tập lệnh DDL và bất kỳ thay đổi mới nào sẽ được đặt trong một tệp riêng biệt?

Còn việc xử lý các thay đổi được thực hiện trong công cụ Trình quản lý cơ sở dữ liệu thì sao?

Tôi muốn có một giải pháp chung cho bất kỳ loại RDBMS nào.

Có tùy chọn nào khác không?

+0

Microsoft SQL Server có thể được đưa vào Source Safe điều khiển phiên bản, tôi không được thông báo về các giải pháp tương tự khác. Tôi thực sự muốn tìm một số giải pháp khác mà làm việc cho các cơ sở dữ liệu khác. –

+0

@Flakron Bytyqi: ** An toàn nguồn ** ?! Nếu [Eric Sink] (http://www.sourcegear.com/vault/) thấy điều này, anh ta sẽ đích thân đến nhà bạn và cắt giấy cho bạn đến một nửa cái chết với một hóa đơn bán hàng. –

Trả lời

1

Nếu bạn cần giải pháp chung - hãy đặt mọi thứ trong tập lệnh (tệp văn bản đơn giản) và đặt trong hệ thống Kiểm soát phiên bản (có thể sử dụng bất kỳ VCS nào).

Việc nhóm các đối tượng cơ sở dữ liệu tương tự thành tập lệnh sẽ phụ thuộc vào yêu cầu của bạn.

Vì vậy, bạn có thể ví dụ:

cửa hàng bảng/chỉ/trong một hoặc một số kịch bản Mỗi cửa hàng thủ tục trong kịch bản riêng hoặc kết hợp thủ tục nhỏ vào một kịch bản. Tuy nhiên cần nhớ một điều quan trọng với cách tiếp cận này: đừng quên thay đổi kịch bản nếu bạn thay đổi bảng/xem/thủ tục trực tiếp trong cơ sở dữ liệu và không tạo/tạo/biên dịch đối tượng db trong cơ sở dữ liệu sau khi thay đổi tập lệnh.

3

Tôi là một fan hâm mộ khổng lồ VCS nói chung và tăng cường Mercurial lớn, nhưng tôi thực sự nghĩ rằng bạn đang đi xuống con đường sai lầm.

VCS không chỉ là về những thay đổi lặp lại, "cái gì", chúng còn trả lời "người", "khi nào" và "tại sao". Đối với một cơ sở dữ liệu, những câu trả lời này ít thú vị hơn hoặc khó cung cấp cho VCS. Nếu bạn đang thực hiện xuất hàng đêm và cam kết "người" sẽ luôn là "cron" và "lý do" sẽ luôn là "nửa đêm".

Điều VCS hiện đại khác thực sự tốt là giúp bạn hợp nhất các thay đổi từ nhiều nhánh. Đó là ít áp dụng trong thế giới cơ sở dữ liệu. Rất hiếm khi bạn nói "Tôi muốn cấu trúc bảng này, nhưng dữ liệu này", và nếu bạn làm việc hợp nhất văn bản/khác sẽ không giúp bạn nhiều.

Điều làm gì "gì" và "khi" rất tốt là một hệ thống sao lưu gia tăng, và đó có thể là phù hợp hơn.

Tại nơi làm việc, chúng tôi sử dụng Tivoli và ở nhà tôi sử dụng rdiff-sao lưu và sao chép, nhưng có rất nhiều lựa chọn tuyệt vời.

Tôi đoán nguyên tắc chung của tôi về ngón tay cái là "nếu nó được gõ bằng tay bởi một con người thì nó vào kiểm soát nguồn, và nếu nó được tạo ra/xuất khẩu sau đó nó đi trong backup"

Chắc chắn bạn có thể làm cho công việc này, nhưng tôi không nghĩ rằng nó sẽ mua cho bạn nhiều hơn các giải pháp sao lưu truyền thống.

+0

Tôi có xu hướng không đồng ý. Chúng tôi làm việc trên cơ sở dữ liệu của chúng tôi với một số dev và phát triển, và mọi thứ trở thành một mớ hỗn độn bởi vì chúng tôi không thể dễ dàng theo dõi những thay đổi mã của chúng tôi. Dữ liệu không phải là vấn đề, có thể được xử lý với các bản sao lưu thông thường. Đó là mã cần cấu trúc. – thomaspaulb

1

SQL Source Control hiện đang hỗ trợ SVN và TFS, nhưng yêu cầu Mercurial đang tăng lên nhanh chóng và chúng tôi hy vọng sẽ có một câu chuyện cho điều này rất sớm.

Chúng tôi sử dụng UserVoice để đo lường nhu cầu vì vậy hãy bỏ phiếu cho phù hợp nếu bạn là thú vị trong này: http://redgate.uservoice.com/forums/39019-sql-source-control

+1

Tin tốt - Kiểm soát nguồn SQL hiện đã được phát hành với sự hỗ trợ cho Mercurial (và bất kỳ hệ thống điều khiển nguồn nào có dòng lệnh phù hợp). –

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