User Tag List

+ Trả lời chủ đề
Hiện kết quả từ 1 tới 3 của 3

Chủ đề: Mười lỗi thường gặp khi làm việc với cơ sở dữ liệu

  1. #1
    Quân Nhân Danh Dự
    Tham gia ngày
    Jan 2004
    Bài gửi
    1.404

    Mặc định Mười lỗi thường gặp khi làm việc với cơ sở dữ liệu

    Dịch từ bản tiếng Anh Ten of the Biggest Mistakes Developers Make With Databases của Mike Gunderloy http://www.developer.com/db/article.php/3589351


    Các xu hướng công nghệ trong phát triển phần mềm luôn luôn thay đổi, nhưng cũng có một vài thứ tồn tại khá ổn định, một trong số đó là việc sử dụng các cơ sở dữ liệu (CSDL). Ngày nay, các lập trình viên vẫn thực hiện các thao tác đọc và ghi dữ liệu vào CSDL giống như các lập trình viên mười năm trước đây đã làm. Bởi vậy thật ngạc nhiên khi chúng ta vẫn tiếp tục mắc các lỗi giống nhau trong nhiều năm. Nguyên nhân có lẽ bởi chúng ta chỉ học cách sử dụng các CSDL một cách phiến diện thay vì nghiên cứu chúng cẩn thận. Sau đây là 10 lỗi phổ biến nhất mà các lập trình viên thường gặp khi làm việc với CSDL.

    1- Chọn sai CSDL
    Mỗi CSDL có một thế mạnh riêng, bởi vậy việc đầu tiên chúng ta cần làm là lựa chọn một CSDL phù hợp. Có những người sử dụng Access để lưu một lượng dữ liệu khổng lồ và chịu hậu quả là sự quá tải, hoặc ngược lại, một số người trả tiền mua SQL Server chỉ để lưu vài trăm bản ghi.

    Các CSDL hiện có trên thị trường có thể được phân thành ba loại: Các CSDL trên máy để bàn và CSDL tích hợp dùng cho các ứng dụng nhỏ, các phiên bản chuyên biệt của các CSDL lớn dùng cho lượng dữ liệu cỡ vài gigabyte, và cuối cùng là các CSDL thương mại thực thụ như SQL Server, Oracle, DB2... có khả năng xử lí gần như mọi thứ mà bạn "vứt" vào trong đó. Việc đầu tiên bạn phải làm là ước lượng khối lượng dữ liệu cần lưu trữ và chọn một CSDL phù hợp.


    2- Chọn quá nhiều CSDL
    Các API như ODBC, JDBC và OLE DB đã hỗ trợ cho ý tưởng "ứng dụng độc lập với CSDL", nghĩa là bạn có thể viết ứng dụng của mình theo cách nào đó để nó làm việc được với bất kì CSDL nào.

    Tuy nhiên nhiều lập trình viên đã quá lạm dụng ý tưởng này. Họ tốn thời gian và công sức để viết các thành phần làm nhiệm vụ dịch các câu truy vấn SQL thành một ngôn ngữ ở mức thấp mà tất cả các CSDL đều hiểu được và cùng lúc đó vứt bỏ các tính năng mức cao sẵn có trong từng CSDL cụ thể. Nguyên nhân là ở chỗ các lập trình viên này lo ngại khách hàng của mình sẽ chuyển sang dùng CSDL khác trong tương lai và do đó tốt nhất là nên chuẩn bị cho điều đó ngay từ bây giờ.

    Để tránh tình trạng này, bạn nên viết ứng dụng của mình với một CSDL nào đó. Nếu ứng dụng của bạn tốt thì khách hàng sẽ sẵn sàng cài đặt CSDL mà bạn yêu cầu và hiếm khi có chuyện họ chuyển sang dùng CSDL khác.

    3- Không hiểu rõ dữ liệu
    Việc thiết kế CSDL không phải được thực hiện trong "chân không" mà luôn gắn liền với các quy tắc trong thực tế. Bởi vậy, bạn phải làm việc với người dùng để tìm ra kích thước của các trường dữ liệu, các quy tắc áp dụng cho các trường dữ liệu đó, kiểu dữ liệu được lưu trữ, những người dùng có quyền cập nhật dữ liệu,...

    Không hiểu rõ dữ liệu khiến bạn phải tốn thời gian để thiết kế lại CSDL.
    Lần sửa cuối bởi Nistelrooy; 05-04-2006 lúc 12:20 AM

  2. #2
    Quân Nhân Danh Dự
    Tham gia ngày
    Jan 2004
    Bài gửi
    1.404

    Mặc định

    4- Thiếu kiến thức cơ bản về CSDL
    Nhiều nhà quản lí cho rằng bất kì lập trình viên nào cũng có khả năng thiết kế CSDL. Điều này thật đáng ngạc nhiên bởi chúng ta đều đồng ý rằng không phải lập trình viên nào cũng biết lập trình bằng C# hay tạo ra các Web Services. Vậy tại sao chúng ta không thừa nhận điều tương tự trong CSDL? Hậu quả của quan niệm sai lầm này là có vô số CSDL được thiết kế bởi những người chưa từng biết đến khái niệm chuẩn hoá hoặc chưa từng hiểu về các dạng chuẩn. Các CSDL này có các bảng kích thước lớn chứa gần như mọi thứ trong đó và tất nhiên cũng chứa vô số các dị thường cập nhật cũng như các điểm yếu về hiệu năng.
    Để thiết kế CSDL một cách hiệu quả bạn cần phải nghiên cứu cẩn thận về nó chứ không thể áp dụng phương pháp "thử-sai".

    5- Chuẩn hóa quá mức

    Lỗi này hoàn toàn trái ngược với lỗi thứ 4. Một số lập trình viên chuẩn hóa CSDL tới mức họ đặt tất cả mọi thứ vào trong các bảng lookup. Chẳng hạn các giá trị "yes" và "no" được lưu riêng trong một bảng tblAnswers, đươc định danh bởi khóa chinh AnswerID, Các bảng khác tham chiếu tới các giá trị "yes" và "no" thông thông qua khóa ngoài AnswerID của các bảng đó!!!

    Bạn cần phải biết các quy tắc chuẩn hóa, tuy nhiên bạn cũng phải biết chuẩn hóa tới mức nào là đủ và thậm chí phải biêt cách "giải chuẩn hóa" (denormalization) nhằm mục đích nâng cao hiệu năng.

    6- Ẩn logic ứng dụng một cách không hợp lí
    Việc sử dụng các stored procedure và các trigger mang lại nhiều lợi ích. Chúng đảm bảo cho việc xử lí dữ liệu nhất quán khi có nhiều máy khách cùng truy nhập vào CSDL. Tuy nhiên chúng cũng có thể trở thành các hộp đen che đi một phần logic ứng dụng. Các nhà phát triển Web và ứng dụng máy khách không nhìn thấy và không thể sửa đổi phần logic ứng dụng này. Bởi vậy các phần logic ứng dụng nằm trong CSDL thường không được thiết kế, kiểm thử và sửa đổi theo các chuẩn được áp dụng cho phần còn lại của ứng dụng.
    Hãy suy nghĩ kĩ lưỡng trước khi đặt một đoạn mã vào trong CSDL.

    7- Không sao lưu dữ liệu
    Kế hoạch sao lưu dữ liệu phải được thực hiện ở ngay giai đoạn đầu của chu trình phát triển.
    Lần sửa cuối bởi Nistelrooy; 04-04-2006 lúc 11:35 PM

  3. #3
    Quân Nhân Danh Dự
    Tham gia ngày
    Jan 2004
    Bài gửi
    1.404

    Mặc định

    8- Không kiểm soát phiên bản
    Bạn phải kiểm soát được những sự thay đổi về lược đồ CSDL cũng như dữ liệu được lưu trong đó. Nghĩa là, bạn cần mở rộng việc kiểm soát phiên bản ra cho cả CSDL. Sẽ không có nhiều ý nghĩa nếu bạn quay lại sửa lỗi cho một phiên bản phần mềm mà không thể tạo ra CSDL tương ứng với phiên bản đó.

    9- Không sử dụng các công cụ đi kèm
    Các CSDL hiện đại thường được cung cấp kèm theo các công cụ hỗ trợ cho việc quản trị dữ liệu. Chẳng hạn SQL Server có công cụ hỗ trợ việc tối ưu hóa các câu truy vấn trong điều kiện tải hiện thời. Bởi vậy các công cụ đi kèm thường làm tăng tốc độ xử lí và giảm tải cho CPU.

    Nếu bạn không biết cách sử dụng các công cụ và các tiện ích đi kèm theo CSDL thì điều đó nghĩa là bạn đã phải trả tiền cho những thứ mà bạn không dùng đến.

    10- Lạm dụng các CSDL
    Nhiều lập trình viên "vứt" tất cả các loại dữ liệu trong một ứng dụng vào CSDL. Chẳng hạn, dữ liệu về người dùng được lưu trữ cùng với dữ liệu thương mại trong một CSDL khách/chủ, trong khi chúng hoàn toàn có thể được lưu trong các file trên máy cục bộ. Việc lạm dụng CSDL sẽ phức tạp hóa bản thân CSDL đồng thời làm giảm hiệu năng hệ thống.

    Khi lưu trữ dữ liệu, bạn cần xem xét các phương thức lưu trữ khác nhau (CSDL, registry, file văn bản, file XML,...) và đặt mỗi loại dữ liệu vào một nơi phù hợp. Ngày nay người ta lại đang có xu hướng lạm dụng các file XML để lưu trữ dữ liệu thay cho các CSDL quan hệ. Tuy nhiên quy tắc nêu trên vấn còn nguyên giá trị.


    --------------------------------------------- HẾT ---------------------------------------
    Lần sửa cuối bởi Nistelrooy; 05-04-2006 lúc 12:22 AM

+ Trả lời chủ đề

Thông tin chủ đề

Users Browsing this Thread

Hiện có 1 người đọc bài này. (0 thành viên và 1 khách)

Từ khóa (Tag) của chủ đề này

Quyền viết bài

  • Bạn không thể gửi chủ đề mới
  • Bạn không thể gửi trả lời
  • Bạn không thể gửi file đính kèm
  • Bạn không thể sửa bài viết của mình


About svBK.VN

    Bách Khoa Forum - Diễn đàn thảo luận chung của sinh viên ĐH Bách Khoa Hà Nội. Nơi giao lưu giữa sinh viên - cựu sinh viên - giảng viên của trường.

Follow us on

Twitter Facebook youtube