Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Sử dụng các công cụ lưu trữ MySQL khác nhau trong thiết kế cơ sở dữ liệu

Bất kỳ kiến ​​trúc sư cơ sở dữ liệu nào thiết kế cơ sở dữ liệu MySQL đều phải đối mặt với vấn đề chọn công cụ lưu trữ thích hợp. Thông thường, một ứng dụng chỉ sử dụng một công cụ: MyISAM hoặc InnoDB . Nhưng hãy cố gắng linh hoạt hơn một chút và tưởng tượng cách sử dụng các công cụ lưu trữ khác nhau.

Mô hình dữ liệu ban đầu

Để bắt đầu, hãy xây dựng một mô hình dữ liệu đơn giản hóa cho hệ thống CRM (quản lý quan hệ khách hàng) mà chúng tôi sẽ sử dụng để minh họa quan điểm. Thiết kế sẽ bao gồm các chức năng CRM chính:dữ liệu bán hàng, định nghĩa sản phẩm và thông tin để phân tích. Nó sẽ không chứa thông tin chi tiết thường được sử dụng trong hệ thống CRM.




Như bạn có thể thấy, mô hình dữ liệu này có các bảng lưu trữ thông tin giao dịch được gọi là salesale_item . Khi khách hàng mua thứ gì đó, ứng dụng sẽ tạo một hàng mới trong sale bàn. Mỗi sản phẩm đã mua sẽ được phản ánh trong sale_item bàn. Một bảng có liên quan, sale_status , là để lưu trữ các trạng thái có thể có (tức là đang chờ xử lý, hoàn thành, v.v.).

product bảng lưu trữ thông tin về hàng hóa. Nó xác định từng sản phẩm và các bộ mô tả cơ bản của nó. Trong một sơ đồ chi tiết hơn, tôi sẽ thêm nhiều bảng hơn để xử lý đặc điểm kỹ thuật và phân loại sản phẩm. Nhưng đối với nhu cầu hiện tại của chúng tôi, điều đó không cần thiết.

Bảng khách hàng lưu giữ dữ liệu về khách hàng. Đây là một phần không thể thiếu của bất kỳ hệ thống CRM nào và nó thường theo dõi hoạt động cá nhân của tất cả người dùng. Rõ ràng, nó thường có thông tin thực sự chi tiết. Nhưng như tôi đã lưu ý, chúng tôi không cần những chi tiết này ngay bây giờ.

log bảng lưu trữ những gì mỗi khách hàng đã làm trong ứng dụng. Và report_sales bảng được thiết kế để sử dụng phân tích dữ liệu.

Tiếp theo, tôi sẽ mô tả các công cụ lưu trữ MySQL có thể được sử dụng trong thiết kế này. Và sau đó, chúng ta sẽ thảo luận về động cơ nào phù hợp với từng loại bảng.

Tổng quan về Công cụ lưu trữ MySQL

Công cụ lưu trữ là một mô-đun phần mềm mà MySQL sử dụng để tạo, đọc hoặc cập nhật dữ liệu từ cơ sở dữ liệu. Không nên chọn ngẫu nhiên một công cụ, nhưng nhiều nhà phát triển hài lòng khi sử dụng MyISAM hoặc InnoDB, mặc dù các tùy chọn khác cũng có sẵn. Mỗi động cơ đều có ưu và nhược điểm riêng và việc lựa chọn động cơ phù hợp phụ thuộc vào một số yếu tố. Chúng ta hãy xem xét các công cụ phổ biến nhất.

  • MyISAM có lịch sử lâu đời với MySQL. Nó là công cụ mặc định cho cơ sở dữ liệu MySQL trước khi phát hành phiên bản 5.5. MyISAM không hỗ trợ giao dịch và chỉ có khóa cấp bảng. Nó chủ yếu được sử dụng cho các ứng dụng cần đọc nhiều.
  • InnoDB là một động cơ lưu trữ chung cân bằng giữa độ tin cậy cao và hiệu suất tốt. Nó hỗ trợ các giao dịch, khóa cấp độ hàng, khôi phục sự cố và kiểm soát đồng thời nhiều phiên bản. Ngoài ra, nó cung cấp một ràng buộc toàn vẹn tham chiếu khóa ngoại.
  • Bộ nhớ động cơ lưu trữ tất cả dữ liệu trong RAM. Nó có thể được sử dụng để lưu trữ các tài liệu tham khảo tra cứu.
  • Một công cụ khác, CSV , giữ dữ liệu trong tệp văn bản với các giá trị được phân tách bằng dấu phẩy. Định dạng này chủ yếu được sử dụng để tích hợp với các hệ thống khác.
  • Hợp nhất là một lựa chọn tốt cho các hệ thống báo cáo, chẳng hạn như trong kho dữ liệu. Nó cho phép nhóm hợp lý một tập hợp các bảng MyISAM giống hệt nhau, cũng có thể được tham chiếu như một đối tượng.
  • Lưu trữ được tối ưu hóa để chèn tốc độ cao. Nó lưu trữ thông tin trong các bảng nhỏ gọn, không được lập chỉ mục và không hỗ trợ các giao dịch. Công cụ lưu trữ Archive lý tưởng để lưu giữ một lượng lớn dữ liệu lưu trữ hoặc lịch sử hiếm khi được tham chiếu.
  • Liên kết engine cung cấp khả năng tách các máy chủ MySQL hoặc tạo một cơ sở dữ liệu logic từ nhiều máy chủ vật lý. Không có dữ liệu nào được lưu trữ trên các bảng cục bộ và các truy vấn được thực thi tự động trên các bảng từ xa (được liên kết).
  • Lỗ hổng bảo mật engine hoạt động như một "lỗ đen" chấp nhận dữ liệu nhưng không lưu trữ dữ liệu đó. Tất cả các lựa chọn trả về một tập dữ liệu trống.
  • Động cơ Ví dụ được sử dụng để chỉ ra cách phát triển các công cụ lưu trữ mới.

Đây không phải là danh sách đầy đủ các công cụ lưu trữ. MySQL 5.x hỗ trợ chín trong số chúng ngay từ hộp, cùng với hàng chục chương trình khác được phát triển bởi cộng đồng MySQL. Bạn có thể tìm thấy thêm thông tin chi tiết về công cụ lưu trữ trên tài liệu chính thức của MySQL.

Cập nhật Thiết kế Mô hình Dữ liệu

Nhìn lại mô hình dữ liệu của chúng tôi. Rõ ràng, các bảng khác nhau sẽ được sử dụng theo những cách khác nhau. sale bảng phải hỗ trợ các giao dịch. Mặt khác, logreport_sales bảng không yêu cầu tính năng này. Nhiệm vụ chính của log bảng đang lưu trữ dữ liệu với hiệu quả tối đa. Truy xuất nhanh là yêu cầu chính đối với report_sales bàn.

Hãy ghi nhớ các điểm ở trên và sửa đổi giản đồ cơ sở dữ liệu của chúng tôi. Trong Vertabelo, bạn có thể đặt “Công cụ lưu trữ” trong Thuộc tính bảng bảng điều khiển. Mời các bạn xem những hình ảnh bên dưới.


Đặt công cụ lưu trữ

Vì vậy, hãy xem thiết kế cơ sở dữ liệu được cập nhật.




Tôi đã chỉ định công cụ lưu trữ cho các bảng hiện có và tổ chức lại report_sales bàn. Như bạn có thể thấy, các bảng được chia thành ba nhóm:

  • Các bảng giao dịch, được sử dụng với ứng dụng chính
  • Các bảng báo cáo cho phân tích BI
  • Bảng nhật ký để lưu trữ tất cả hoạt động của người dùng

Hãy nói về tất cả chúng một cách riêng biệt.

Bảng giao dịch

Các bảng này chứa dữ liệu do người dùng nhập vào trong các hoạt động thường ngày. Trong trường hợp của chúng tôi, sẽ có thông tin bán hàng, chẳng hạn như:

  • nhân viên nào đã bán hàng
  • ai đã mua sản phẩm
  • những gì đã được bán
  • giá bao nhiêu

Trong đa số trường hợp, InnoDB là giải pháp tốt nhất cho các bảng giao dịch. Công cụ lưu trữ này hỗ trợ khóa hàng và một số người dùng có thể làm việc cùng nhau. Tương tự như vậy, InnoDB cho phép sử dụng các giao dịch và khóa ngoại. Nhưng, như bạn biết, những lợi ích này không miễn phí; công cụ có thể thực hiện các câu lệnh đã chọn chậm hơn MyISAM và lưu dữ liệu với hiệu quả kém hơn so với Lưu trữ.

Tất cả các công cụ được mô tả ở trên đều có sẵn một số biện pháp bảo vệ, vì vậy các nhà phát triển không phải viết các hàm khôi phục phức tạp cho mỗi hoạt động. Trong một ứng dụng bán hàng điển hình, việc duy trì tính nhất quán của dữ liệu quan trọng hơn các vấn đề về hiệu suất có thể xảy ra.

Bảng báo cáo

Trong thiết kế mới, tôi chia một bàn thành một vài bàn nhỏ hơn. Điều này giúp tiết kiệm thời gian quản lý dữ liệu và thực hiện bảo trì bảng và chỉ mục. Nó cũng cho phép chúng tôi tạo bảng MERGE sale_report để kết hợp các bảng báo cáo khác. Do đó, công cụ BI vẫn truy xuất dữ liệu từ một bảng lớn (cho mục đích phân tích), nhưng chúng tôi có lợi khi làm việc với các bảng nhỏ hơn.

Report_sale_{year} bảng là bảng MyISAM. Công cụ lưu trữ này không hỗ trợ các giao dịch và chỉ có thể khóa toàn bộ bảng. Vì MyISAM không lo lắng về những mục phức tạp này, nên nó thực hiện các thao tác thao tác dữ liệu với tốc độ nhanh. Do cấu trúc tệp của nó, công cụ lưu trữ này đọc dữ liệu nhanh hơn InnoDB phổ biến hơn.

Bảng nhật ký

Công cụ lưu trữ Archive là lựa chọn tốt để lưu trữ dữ liệu nhật ký. Nó có thể chèn hàng và nén dữ liệu được lưu trữ một cách nhanh chóng. Có những lợi ích tuyệt vời cho việc lưu giữ thông tin về các hoạt động của người dùng. Tuy nhiên, Archive có một số hạn chế. Nó không hỗ trợ hoạt động cập nhật và truy xuất dữ liệu chậm. Nhưng trong một bảng nhật ký, những lợi ích được mô tả quan trọng hơn những hạn chế.

Tích hợp công cụ lưu trữ

Mỗi hệ thống phải được tích hợp với cuộc sống bên ngoài. Đối với các ứng dụng, đây có thể là những người dùng điền các bảng tham chiếu và giao dịch. Nó có thể là các dịch vụ và tích hợp thông qua REST, SOAP, WCF hoặc những thứ tương tự như thế này. Và cuối cùng nhưng không kém phần quan trọng, đó có thể là tích hợp cơ sở dữ liệu.

MySQL và Oracle đã phát triển hai công cụ lưu trữ thực sự hữu ích: Liên kết CSV . Cái đầu tiên, Liên kết , nên được sử dụng để tải dữ liệu từ cơ sở dữ liệu MySQL bên ngoài. Công cụ lưu trữ thứ hai, CSV , cho phép cơ sở dữ liệu lưu các bản ghi ở định dạng CSV và đọc trực tuyến các tệp được phân tách bằng dấu phẩy mà không cần thêm bất kỳ nỗ lực nào.

Như bạn có thể thấy, việc sử dụng các công cụ lưu trữ khác nhau cho các mục đích khác nhau mang lại cho cơ sở dữ liệu của bạn tính linh hoạt cao hơn. Nếu một kiến ​​trúc sư cơ sở dữ liệu đưa ra quyết định của họ sau khi xem xét tất cả các ưu và nhược điểm, thì kết quả có thể thực sự ấn tượng.

Bạn có kinh nghiệm sử dụng các công cụ lưu trữ khác nhau trong thiết kế cơ sở dữ liệu không? Tôi muốn xem các mẹo và đề xuất của bạn. Hãy chia sẻ chúng trong phần bình luận.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách hạn chế quyền truy cập cổng MySQL

  2. Cách đổi tên bảng trong MySQL

  3. Cài đặt Máy chủ Web trong Windows XP với Apache2, PHP5 và MySQL4 - Phần 4

  4. Sự khác biệt giữa MySql và MySqli trong PHP

  5. Cách thoát Trích dẫn Đơn, Ký tự Đặc biệt trong MySQL