lập trình viên cơ sở dữ liệu làm gì?


14

Mỗi lần đọc về lập trình viên của Oracle, v.v., tôi lại bối rối. Tôi không biết chính xác những gì họ làm.

Từ hiểu biết của tôi, lập trình viên ứng dụng cần phát triển chức năng cốt lõi. Các thư viện họ sử dụng có thể giúp phát triển GUI hoặc kết nối cơ sở dữ liệu nhưng chức năng làm cho ứng dụng đó phải được lập trình và điều đó làm cho mọi ứng dụng khác nhau (một số có thể được điều chỉnh phiên bản của các ứng dụng khác).

Trong mối quan hệ này, không phải lập trình cơ sở dữ liệu về cơ bản tạo bảng và các bảng này không được xử lý để đáp ứng với các câu lệnh SQL được phát hành bởi một ứng dụng thường là giao diện người dùng? Vì vậy, việc tạo bảng như vậy là một vấn đề lớn?

Câu trả lời:


18

Để thực sự đánh giá cao những gì lập trình viên cơ sở dữ liệu bạn thực sự phải tự mình thực hiện - hãy để tôi thử và giải thích nó theo cách khác.

Đối với những người không hiểu biết, vẻ như trong các lập trình viên ứng dụng thế giới lý tưởng không thực sự làm điều đó nhiều - họ lấy các yêu cầu và quy trình như được viết bởi các nhà phân tích kinh doanh và dịch chúng thành mã mà các lập trình viên đấu thầu.

Tất nhiên bất cứ ai có bất kỳ lập trình kinh nghiệm nào cũng sẽ biết rằng đây không phải là cách nó hoạt động - bỏ qua hiện tại thực tế là các yêu cầu không bao giờ chỉ định hành vi của ứng dụng xuống các chi tiết tốt nhất, có một số biến chứng

  • Các lập trình viên cần quyết định cách cấu trúc ứng dụng
  • Dịch các yêu cầu thành một cái gì đó mà một máy tính hiểu được thường là xa tầm thường.
  • Các lập trình viên cần phải nhận thức được ý nghĩa của hiệu suất
  • Khi các lập trình viên có được kinh nghiệm sử dụng nền tảng lựa chọn của họ, họ trở nên thành thạo hơn, cung cấp mã chất lượng cao hơn với tốc độ nhanh hơn.

(Tất nhiên đây là một danh sách giảm đáng kể, tôi chỉ đang cố gắng chọn ra những điểm tương đồng với việc phát triển cơ sở dữ liệu)

Phát triển cơ sở dữ liệu cũng tương tự như vậy - đối với người bệnh được thông báo thì có vẻ khá đơn giản, nhưng một khi bạn tham gia nhiều hơn, bạn sẽ nhận thức được các biến chứng cụ thể của phát triển cơ sở dữ liệu:

  • Họ quyết định cơ sở dữ liệu nên được cấu trúc như thế nào
  • Thông thường các truy vấn phức tạp hơn có thể cách xa tầm thường để dịch từ các yêu cầu
  • Các nhà phát triển cơ sở dữ liệu cần quan tâm đến hiệu suất của cơ sở dữ liệu
  • Họ cũng cần quan tâm đến việc duy trì tính toàn vẹn và tính sẵn sàng của dữ liệu
  • Và cũng giống như các nhà phát triển, các lập trình viên cơ sở dữ liệu trở nên thành thạo hơn trong mọi việc họ làm khi họ trở nên có kinh nghiệm hơn.

Giống như việc phát triển ứng dụng chứa đầy những cạm bẫy tiềm ẩn (các vấn đề luồng, v.v.), việc phát triển cơ sở dữ liệu cũng vậy và thường hậu quả của việc phạm lỗi trong các vấn đề này là rất nghiêm trọng (ví dụ như mất dữ liệu hoặc có khả năng ngừng hoạt động đối với tất cả các ứng dụng sử dụng cơ sở dữ liệu) .

Tôi nghĩ điều khiến các lập trình viên nghĩ rằng không có gì với nó ("Không thể lập trình viên làm điều này?") Là có rất nhiều sự chồng chéo giữa các vai trò và họ yêu cầu các bộ kỹ năng tương tự - tôi đã có không còn nghi ngờ gì nữa, bất cứ ai có khả năng trở thành một nhà phát triển giỏi cũng có khả năng trở thành một lập trình viên cơ sở dữ liệu giỏi với thời gian và kinh nghiệm, tuy nhiên không ai nên đánh giá thấp giá trị của một chuyên gia cơ sở dữ liệu có kinh nghiệm.


Cảm ơn đã trả lời (tôi đã từ bỏ hy vọng có được một)! Lý do tôi hỏi điều này là, tôi, với tư cách là một "lập trình viên ứng dụng", đã thiết kế một cơ sở dữ liệu nhỏ trong msaccess để hoàn thành công việc cho dự án của tôi và nó dường như không phải là một công việc nhưng tất nhiên là một lập trình viên tôi không làm gì cả t "dễ dàng". Nhưng tôi vẫn thiếu quan điểm cần thiết để hiểu điều này. Ý tôi là, một dbase khác nhau như thế nào? Giống như không có ứng dụng dev "ghi" mã quản lý tệp nhưng sử dụng các thư viện, không sẵn sàng sử dụng các mẫu / thư viện có sẵn cho thiết kế dbase? Hoặc là lập trình dbase trong quản trị dbase thực tế?

Một lập trình viên điển hình cũng sẽ làm điều này sao? Tôi đoán rằng tôi đã làm việc trong các tổ chức quá nhỏ chưa quan sát được bất kỳ việc sử dụng nào cho một lập trình viên cơ sở dữ liệu vì nhà phát triển ứng dụng thường là người lái tàu, có thể nói như vậy. Anh ấy biết những gì anh ấy muốn và thường tự thiết kế nó.
Brian

1
Theo kinh nghiệm của tôi, có những hành động kinh doanh nhất định đòi hỏi các nhóm chuyên gia của DBA. Lần gần đây nhất tôi nghe nói là sự hợp nhất giữa Coca-Cola và Người giúp việc phút. Cơ sở dữ liệu của họ (và họ có rất nhiều) phải được hợp nhất, và Maid Maid không được thiết kế giống như cách Coca-Cola có của họ và cái này, cái kia, và những thứ khác. Họ đã lên kế hoạch và thử nghiệm sự hợp nhất này trong sáu tháng trước khi kéo tất cả gọn gàng hơn để thực hiện nó. Có một DBA độc lập không nhất thiết phải có trong một công ty nhỏ, nhưng trong các nhóm lớn, chúng trở nên hoàn toàn cần thiết cho sự hài lòng của khách hàng.
Mike S

Điều đó nói rằng, trong các công ty nhỏ (<50 người) có ít nhất một (tốt nhất là hai hoặc ba) DBA độc lập là siêu, siêu đẹp khi có liên quan đến các nhà phát triển ứng dụng. Điều đó và một nhân viên CNTT chuyên dụng để sửa chữa máy tính, nhưng đó hoàn toàn là một câu chuyện khác.
Mike S

2
@ 0A0D, và tất cả thường đến 6 năm sau khi có một tỷ hoặc nhiều bản ghi trong các bảng và khi toàn bộ mớ hỗn độn chậm, họ thuê một chuyên gia cơ sở dữ liệu để sửa lỗi lộn xộn không bao giờ được thiết kế bởi một lập trình viên ứng dụng. Cơ sở dữ liệu cực kỳ khó để cấu trúc lại và cần được thiết kế để thực hiện ngay từ đầu, điều mà tất cả quá ít lập trình viên ứng dụng dường như nắm bắt được. Họ cũng có xu hướng thiết kế dựa trên những gì giao diện người dùng cần chứ không phải những gì cơ sở dữ liệu cần và do đó bỏ qua các kiểm soát nội bộ và các ràng buộc kiểm toán và toàn vẹn dữ liệu, v.v.
HLGEM

12

Lập trình viên cơ sở dữ liệu làm nhiều việc. Đầu tiên họ thiết kế cấu trúc cơ sở dữ liệu để nó sẽ thực hiện đúng với số lượng hồ sơ dự kiến. Thiết kế cấu trúc hoạt động tốt cho một vài nghìn bản ghi có thể làm cho cơ sở dữ liệu không thể sử dụng được ở một vài triệu bản ghi. Họ cũng cần đảm bảo dữ liệu sẽ duy trì tính toàn vẹn theo thời gian và dữ liệu được bảo mật khỏi các thay đổi hoặc đánh cắp trái phép. Họ phải hoàn toàn hiểu được sự bình thường hóa và khi nào cần chuẩn hóa và tại sao. Họ phải hiểu hiệu suất và cách đảm bảo tính toàn vẹn dữ liệu. Họ phải hiểu bảo mật và cách ngăn chặn dữ liệu bị đánh cắp hoặc thay đổi độc hại.

Họ thực hiện các truy vấn điều chỉnh. Tôi đã thay đổi các truy vấn mất vài phút để chạy đến mills giây. Tôi đã thay đổi một quy trình mất hơn 24 giờ để chạy xuống dưới 30 phút. Họ thiết kế và duy trì các cấu trúc lập chỉ mục sẽ cân bằng tốc độ chèn với tốc độ của các lựa chọn.

Họ viết các truy vấn phức tạp, đặc biệt là các truy vấn báo cáo. Cá nhân tôi có các truy vấn bằng văn bản dài hơn 1000 dòng do sự phức tạp của yêu cầu. Họ vẫn phải chạy và chạy thật nhanh.

Họ tạo kho dữ liệu và các quy trình ETL đi kèm để hỗ trợ họ. Thường thì họ cần phải viết các quy trình để đưa dữ liệu từ các nguồn khác và phải tìm ra cách ánh xạ các trường từ một số cơ sở dữ liệu của khách hàng sang chúng và chúng không bao giờ khớp với nhau về kiểu dữ liệu, kích thước dữ liệu, trường bắt buộc, giá trị tra cứu, Vân vân.

Họ phải xác định cách cấu trúc lại khi các yêu cầu cơ sở dữ liệu thay đổi mà không làm tổn hại đến 100.000.000 hồ sơ họ đã có và không khiến việc sử dụng cơ sở dữ liệu bị dừng hoàn toàn. Các bảng dữ liệu lớn có thể liên quan đến hàng ngàn bảng và các procs được lưu trữ và các hàm do người dùng định nghĩa. Hiểu một cấu trúc như vậy cần có thời gian và kỹ năng cũng như hiểu những gì sẽ bị ảnh hưởng bởi những thay đổi và làm thế nào.

Họ thiết kế các cách để kiểm toán dữ liệu vì lý do quy định và phục hồi. Sau đó, họ thiết kế các cách để phục hồi dữ liệu từ các bảng kiểm toán đó. Họ nghiên cứu các vấn đề với dữ liệu để tìm xem sự cố là do lỗi trong quá trình nhập, tệp xấu do người khác cung cấp hoặc chèn / cập nhật xấu từ ứng dụng hoặc từ truy cập trái phép. Họ tìm mọi cách để sửa dữ liệu xấu khi các lập trình viên ứng dụng để lại một lỗ hổng cho tin tặc tấn công.

Thông thường họ có liên quan đến việc chuyển đổi dữ liệu từ một hệ thống sang một hệ thống mới. Đôi khi, điều này liên quan đến việc chuyển dữ liệu từ một sản phẩm COTS sang một sản phẩm mới mà công ty vừa mua. Giống như nhập khẩu được mô tả trước đó, đây là các quy trình phức tạp có thể mất vài tháng để lập kế hoạch và thực hiện và cần phải thử nghiệm rộng rãi. Không giống như nhập khẩu, lập trình viên cơ sở dữ liệu có thể không kiểm soát các cấu trúc dữ liệu khác nhau.


6

Tôi đã thực tập như một lập trình viên cơ sở dữ liệu cho dữ liệu sản xuất của một fab wafer 24 giờ vào cuối những năm 90. Tôi không biết nhiệm vụ của mình điển hình như thế nào, nhưng phần lớn nhất đối với tôi là khi cần thay đổi mã hóa trường hoặc lược đồ, tôi phải đảm bảo rằng sự thay đổi đó là liền mạch với sản xuất. Về cơ bản, điều đó có nghĩa là tôi sẽ bảo họ nâng cấp ứng dụng khách của mình, điều mà họ sẽ làm vào thời điểm thuận tiện cho họ và dự kiến ​​sẽ quay lại ngay lập tức với những thay đổi mới.

Đó là liên quan nhiều hơn tôi đã dự đoán. Kịch bản chuyển đổi và phần mềm máy khách phải được kiểm tra kỹ lưỡng. Thường thì hai bộ dữ liệu giống hệt nhau nhưng không tương thích phải được duy trì đồng bộ hóa cho đến khi mọi người được chuyển đổi. Đôi khi, cần phải thực hiện chuyển đổi theo nhiều giai đoạn, được lên kế hoạch cẩn thận để làm cho nó liền mạch. Không có gì lạ khi chuẩn bị trong nhiều tuần cho việc chuyển đổi xảy ra về cơ bản ngay lập tức.

Nếu một lập trình viên cơ sở dữ liệu đang thực hiện đúng công việc của mình, có vẻ như các nhà quan sát sẽ thấy công việc của anh ta rất dễ dàng. Tôi không ngạc nhiên khi nhiều người không thực sự biết những gì họ làm.


2

Điều này khá đơn giản. Nếu bạn đã nghe về giống như mẫu MVC, bạn nên biết sự khác biệt giữa các bộ điều khiển và mô hình của bạn. Ví dụ: nếu bạn đang viết một ERP thì hãy tưởng tượng rằng trong bộ điều khiển của bạn, bạn chỉ cần nói "lấy raCashFlow" cho mô hình của bạn và mô hình của bạn gọi một chương trình được lưu trữ trong cơ sở dữ liệu. Chương trình được lưu trữ này đảm nhiệm mọi hoạt động tham gia, lọc, đặt hàng, v.v. và bạn sẽ lấy lại được dữ liệu đã xử lý. Trong bộ điều khiển của bạn, bạn chỉ cần kết hợp mọi thứ với nhau.

Nếu bạn có nghi ngờ về các thủ tục được lưu trữ, hãy kiểm tra điều này: tại sao nên sử dụng các thủ tục được lưu trữ?

Nói một cách đơn giản: các nhà phát triển cơ sở dữ liệu viết các chương trình được lưu trữ (thủ tục và chức năng) cho ứng dụng của bạn để chăm sóc M trong MVC (hoặc logic nghiệp vụ nếu bạn không sử dụng mvc).


2

Oracle không chỉ là một cơ sở dữ liệu mà còn là một môi trường lập trình hoàn chỉnh, bao gồm các biểu mẫu và người thiết kế báo cáo. Là một lập trình viên của Oracle, bạn lập trình các ứng dụng người dùng hoàn chỉnh. Mã hóa cơ sở dữ liệu mà bạn tham khảo thường sẽ được thực hiện bởi các chuyên gia quản trị cơ sở dữ liệu (DBA).

Sybase tôi nghĩ là một cái khác có môi trường lập trình tương tự.

Các cơ sở dữ liệu khác có thể tự giới hạn "chỉ" cho phép định nghĩa và thực hiện báo cáo, trong khi các cơ sở dữ liệu khác có thể không cung cấp bất kỳ biểu mẫu hoặc phương tiện thiết kế / thực thi báo cáo nào.


1
"Oracle không chỉ là một cơ sở dữ liệu mà là một môi trường lập trình hoàn chỉnh ... Các cơ sở dữ liệu khác có thể tự giới hạn" chỉ "cho phép định nghĩa và thực thi ..." Điều này tôi không biết. Bây giờ nó có ý nghĩa.
Thomas

Máy chủ SQL là như nhau. Bên cạnh các thủ tục được lưu trữ, các gói SSIS cho phép lập trình trực quan, gọi mã khác hiện có, viết các chương trình vb.net hoặc c # .net, và nhiều hơn nữa, tất cả được gói gọn trong một IDE. Tôi đã không sử dụng SSRS, nhưng tôi nghi ngờ nó tương tự. Có một TON lập trình, và một lập trình viên cơ sở dữ liệu phải biết rất nhiều công cụ và ngôn ngữ và quy trình khác nhau.
thứ năm

2

Tôi muốn nói rằng một nhà phát triển cơ sở dữ liệu chịu trách nhiệm cho một hoặc nhiều điều sau đây

  • Thiết kế, điều này bao gồm tạo bảng (hoặc đúng hơn là xác định quan hệ)
  • Tối ưu hóa, thiết lập các chỉ mục thích hợp, chọn khóa, chọn loại dữ liệu phù hợp
  • Hàm, viết các hàm hữu ích để sử dụng trong các truy vấn
  • Các thủ tục, viết logic ứng dụng được gắn chặt với lớp cơ sở dữ liệu.
  • Tạo các hàm kích hoạt để đáp ứng với các sự kiện
  • Sản xuất thông số kỹ thuật trên.

Tùy thuộc vào RDBMS được đề cập, nó có thể bao gồm các tác vụ như

  • Tạo báo cáo và biểu mẫu
  • Tạo luồng để nhập / xuất dữ liệu

Có một cái nhìn vào danh sách các responsibilites

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.