Data model là gì

  -  

Suy cho cùng, tất cả đều nhắm tới dữ liệu: Dữ liệu đến từ bàn phím người tiêu dùng hoặc tự nguồn mặt ngoài, dữ liệu được cách xử lý theo một số quy tắc nghiệp vụ và sau cuối dữ liệu được hiển thị cho những người dùng (hoặc các ứng dụng mặt ngoài) theo một cách thuận tiện nhất.

Bạn đang xem: Data model là gì

Các góc cạnh của ứng dụng, hay tính năng bạn viết đều phải có dữ liệu tương quan để sở hữu lại ý nghĩa cho hệ thống. Vày vậy, câu hỏi đặt ra tại chỗ này là: Đâu là các yếu tố của một Data model tốt? Câu vấn đáp sẽ được lời giải trong nội dung bài viết dưới đây, nhưng trước tiên hãy mang lại với 2 định nghĩa:


Định nghĩa 1: Data mã sản phẩm là gì?

Data mã sản phẩm là một cách để tổ chức dữ liệu của ứng dụng. Bạn dạng thân Data model không bắt buộc là dữ liệu, cũng chưa hẳn là thứ bạn áp dụng để tàng trữ dữ liệu (hệ thống cơ sở dữ liệu bạn chọn). Vì đó hoàn toàn có thể khẳng định như sau:

Bạn có thể lưu trữ cùng một tài liệu sử dụng các quy mô dữ liệu khác nhau.Bạn hoàn toàn có thể lưu trữ những dữ liệu không giống nhau bằng phương pháp sử dụng cùng một quy mô dữ liệu.Có thể thay đổi dữ liệu từ mô hình dữ liệu này sang quy mô dữ liệu không giống (quá trình này thường xuyên được gọi là Migration of Data – bàn giao dữ liệu).

Định nghĩa 2: ra làm sao là một Data mã sản phẩm tốt?

Nói bí quyết khác là làm cố kỉnh nào để rất có thể so sánh các tuỳ chọn quy mô dữ liệu không giống nhau? Hay phần lớn khía cạnh nào rất cần phải xem xét?

*

Có 5 khía cạnh tương quan đến một Data model tốt:

Tính rõ ràng: Sự dễ hiểu đối với những người sử dụng. Hầu hết thời gian developers hiểu mã thay vì chưng viết, vị vậy bạn cần làm rõ những gì đang làm với tài liệu của mình.Tính linh hoạt: kĩ năng phát triển của mô hình mà không cần tác động quá bự đến các đoạn code. Công ty startup mà lại bạn thao tác đang phạt triển, bởi vì vậy các hệ thống sẽ biến đổi và các quy mô dữ liệu ẩn dưới chúng sẽ đề nghị phải trở nên tân tiến theo thời gian.Hiệu suất: Đây là một trong chủ đề rất lớn và nội dung bài viết này vẫn không nói tới các nhà hỗ trợ cơ sở dữ liệu (database vendors) hoặc một trong những chỉnh sửa chuyên môn để cải thiện tốc độ đọc với ghi dữ liệu. Cách thức thiết kế Data Model đúng mực cũng đem lại công dụng về hiệu suất. Phần sau vẫn đi sâu hơn vào điều tỉ mỷ này.Năng suất: Dưới góc nhìn của lập trình viên (developer), kiên cố hẳn bạn sẽ muốn có một quy mô dữ liệu dễ thao tác mà không cần sử dụng nhiều thời gian (định nghĩa về năng suất).Khả năng truy xuất nguồn gốc: Cuối cùng, những công ty không chỉ muốn bao gồm dữ liệu tương quan đến người tiêu dùng của mình, mà còn có dữ liệu liên quan đến chính hệ thống. Tài liệu có thể cung cấp tin những gì đã xẩy ra trong vượt khứ, phần đông giá trị doanh nghiệp có tại 1 thời điểm như thế nào đó.

Tựu trung, Data mã sản phẩm cần dễ hiểu, dễ không ngừng mở rộng hoặc cố gắng đổi, gồm hiệu suất giỏi đồng thời tốt cho năng suất trong phòng phát triển và có chức năng mang lại hiểu biết về phần nhiều gì đã xẩy ra trong vượt khứ.


Các kỹ thuật lập Data Model

Thực tế, ko có cách thức tuyệt đối nào để lập một mô hình dữ liệu hoàn hảo. Câu trả lời đúng chuẩn thường là “còn tuỳ vào nhiều yếu tố”, nhưng bài viết này sẽ đề xuất một giải pháp tổng quát đáp ứng được phần nhiều các yêu mong đặt ra. Trước tiên, hãy khám phá “cách thông thường” của vấn đề lập mô hình dữ liệu mà dĩ nhiên hẳn các bạn sẽ cảm thấy quen thuộc thuộc.

Mô hình dữ liệu chuẩn (Domain Model)

Bạn xác minh các đối tượng người dùng và trực thuộc tính của chúng dựa trên phạm vi của vấn đề đang giải quyết, giống hệt như những loại hộp khác biệt sẽ dùng làm cất giữ hầu như loại dụng cụ khác nhau.

Giả sử ai đang phát triển phương án phần mượt Meetings. Phạm vi của các bạn sẽ trông hệt như danh sách sau:

Cuộc họp: Với thông tin cơ phiên bản về địa điểm, thời gian, thời lượng và hoạt động như nơi những thực thể còn sót lại được liệt kê dưới hoạt độngCon người: Các member của cuộc họp rất có thể với một số vai trò cụ thể (người tổ chức, thư ký, người thuyết trình...)Chủ đề: Chương trình mang đến cuộc họp bên dưới dạng danh sách các chủ đề với một trong những thứ tự, mô tả, thời lượng...Thoả thuận: Kết quả chủ yếu của cuộc trò chuyện hoàn toàn có thể được đính thẻ để thuận tiện tìm tìm sau nàyGhi chú: Các cuộc chat chit chính bên trong một nhà đềHành động: Một số trách nhiệm ngắn hạn được giao cho một người.

Rõ ràng là loại mô hình này khá rõ ràng vì được định nghĩa giống như cách họ nghĩ về vấn đề. Bởi vậy, đầu tiên hãy thực hiện kiểm tra về 5 khía cạnh phân tích (thang điểm từ 1 đến 10)

Sự thông suốt: 10 điểm. Có nghĩa là mô hình rất rõ ràng, giống như con tín đồ nghĩ.Tính linh hoạt: 3 điểm. Yếu đuối tố không thật sự giỏi vì cùng với mỗi nghành nghề dịch vụ mới được yêu cầu, sẽ buộc phải một sự đổi khác về mô hình.Hiệu suất: 6 điểm. Loại mô hình này không tồn tại hiệu suất cực tốt và tại sao sẽ được trình diễn sau đây.Năng suất: 3 điểm. Mỗi tủ chứa đồ (hoặc bảng) sẽ yêu cầu phương thức riêng biệt để cập nhật giá trị trong những trường. Điều này không tốt cho năng suất của xây dựng viên, trừ khi bạn phát triển một phần mềm trung gian để tiếp xúc với cơ sở dữ liệu theo “cách tham số” nhưng điều đó cũng không tự nhiên. ANATICS sẽ lời khuyên một cách xuất sắc hơn để thực hiện điều này.Khả năng tróc nã xuất nguồn gốc: 2 điểm. Loại mô hình này update các trường tài liệu ngay lập tức, bởi vậy khi địa chỉ cửa hàng thay đổi, địa chỉ cũ sẽ ảnh hưởng mất. Cách giải quyết và xử lý là tất cả một bảng riêng biệt ghi lại tất cả các đổi khác (bảng nhật ký) dẫu vậy sẽ được bóc biệt với phần còn lại của mô hình.

*

Mô hình hoá tổng hợp

Cấu trúc của mô hình


Đề xuất chỉ gồm một bảng (hoặc bộ sưu tập) lưu giữ trữ tất cả dữ liệu miền, theo thuộc một cấu trúc và không làm cho mất bất kỳ dữ liệu như thế nào (không cập nhật, không xoá). Bao gồm 2 nước ngoài lệ đối với quy tắc này, ANATICS vẫn đề cập mang đến chúng tại vị trí sau.

*

Cấu trúc của “universal record” này là:

_id: Định danh tuyệt nhất của thực thể.uniqueKey: (Tuỳ chọn) Đây cũng là 1 trong những mã định danh tốt nhất của thực thể cơ mà được điều khiển và tinh chỉnh bởi một trong những quy tắc tởm doanh. Ví dụ: địa chỉ cửa hàng email buộc phải là tuyệt nhất hoặc mối quan hệ giữa hai thực thể rất có thể tạo ra một thực thể mới tất cả khoá tuyệt nhất là “entity_id_1 - entity_id_2”.domain: Loại tin tức đang lưu lại trữ. đa số tất cả đều có lợi cho câu hỏi lọc search nạp dữ liệu và tất cả tính ví dụ cho nhà cải tiến và phát triển khi xem cơ sở dữ liệu.company_id: trường này rất có thể gây tranh cãi, tuy vậy trong một vài ứng dụng đã cải cách và phát triển về khái niệm công ty (tổ chức mà tín đồ dùng của chúng ta thuộc về) luôn luôn hiện hữu góp tăng tính cụ thể của quy mô dữ liệu khi có 1 trường dữ liệu chứa toàn bộ các domain name liên quan.Mối quan hệ tình dục của dữ liệu: hiện giờ bạn xem xét về những mối quan tiền hệ. Hãy nhận định rằng có một bảng, không có quan hệ rõ ràng nào sinh sống cấp mô hình (hoặc gồm ở cấp cho dữ liệu). Ở đây, chúng ta cũng có thể xác định thực thể gốc của thực bộc lộ tại, bởi vậy khi tất cả quyền truy vấn vào thực thể gốc, bạn cũng sẽ có quyền truy cập vào thực thể này. Đây hoàn toàn có thể là company_id hoặc user_id cho hầu hết các trường hợp.attrs: Đây là khu vực chứa dữ liệu thực tế, là một trong những mảng các đối tượng người dùng ở dạng key, value, timestamp.

*

Trường attrs

Với trường này, tổng thể mô hình thực sự bên trong trường attrs và mỗi khoá hoàn toàn có thể nhiều hơn một lần (đối với các mốc thời hạn “timestamp” khác nhau).

Ví dụ:

key: ‘name’, value: ‘José’,timestamp: 1575490495682.key: ‘name’, value: ‘José Manuel’,timestamp: 1575490495795.

Cho biết rằng cùng một thương hiệu khoá có mức giá trị 'José' tại timestamp 1575490495682, nhưng kế tiếp đã thay đổi 'José Manuel' trên 1575490495795. Vày dấu thời gian này to hơn dấu thời gian trước đó, ANATICS xem cực hiếm này là giá trị hiện tại.

Ngoài ra, sẽ luôn luôn có 3 trường sệt biệt phía bên trong trường attrs:

company_id: Đã được giải thích.user_id: Hoặc người dùng chịu nhiệm vụ về bài toán tạo thực thể.trạng thái: quý hiếm 1 cho các thực thể đang vận động và -1 cho những gì đang xoá (mặc dù thực thụ không lúc nào xoá một thực thể)

Lưu ý rằng “hình dạng” của nằm trong tính giá trị phía bên trong mỗi trực thuộc tính rất có thể thuộc bất kỳ kiểu nào. Nếu như nghĩ theo thuật ngữ Javascript, chúng ta có thể có: Chuỗi, Booleans, Số, Ngày, Mảng, Đối tượng...

*

Bây giờ, đã đến khi xem chi tiết từng chu đáo trong so sánh 5 khía cạnh của Data Model.

Sự thông suốt

Đây không hẳn là tính năng lớn số 1 của quy mô này, bởi vì mỗi khi nhìn vào một bản ghi, bạn cần phải đi sâu vào bên trong trường attrs. Đây là ngân sách chi tiêu phải trả, sự tấn công đổi để sở hữu được những tiện ích khác.

Mặc cho dù sau khi thao tác với mô hình giá trị đặc biệt quan trọng này 1 thời gian, bạn sẽ “thấy mô hình rất rõ ràng”, nhưng so với người đọc, thoạt nghe có vẻ như khó hiểu.

Bạn sẽ nhận một phần thưởng to khi lập mô bên cạnh đó thế này bằng cách mô tả toàn bộ mô hình của bản thân bằng một câu tróc nã vấn. Bởi vì vậy, nếu cần có một tài liệu (hoặc tốt hơn là 1 trang web) hiển thị những trường “thực” của từng thực thể, chúng ta cũng có thể đạt được điều ấy rất dễ dàng.

Linh hoạt

Tính linh hoạt được tích đúng theo trong mô hình meta và sẽ là khái niệm cốt lõi. Rứa vì xác định trước những trường của thực thể cho từng phạm vi (còn được hotline là “lược đồ”), ANATICS chỉ xác định cấu tạo chung này hoàn toàn có thể chứa ngẫu nhiên lược trang bị nào.

Tính hoạt bát thực sự khỏe khoắn trong trường đúng theo này:

Hệ thống của công ty cần lưu trữ loại dữ liệu mới tại một thực thể một mực hoặc có thể là các thực thể mới. Chúng ta đã biết rằng bất kỳ thực thể làm sao cũng rất có thể được mô hình hoá bằng định nghĩa khoá quý giá (Key-value) 1-1 giản, do vậy các bạn sẽ không phá vỡ ngẫu nhiên đoạn mã nào bằng cách thực hiện chuyển đổi này. Vụ việc là quy mô thực sự nằm phía bên trong dữ liệu, ko phải bên phía trong cơ sở dữ liệu.Bạn cần thay đổi mối quan hệ nam nữ giữa những thực thể, có thể có một thực thể dựa vào vào người dùng, và bây chừ cần dựa vào vào một nhóm người dùng… Đừng lo lắng, bạn chỉ cần cập nhật trường mối quan hệ bằng một truy hỏi vấn. Trong trường hợp này, tất cả thể bạn sẽ cần chuyển đổi mã, nhưng bạn (một lần nữa) không đề xuất phải biến hóa mô hình.

Xem thêm: Phân Tích Press Kit Là Gì ? Định Nghĩa, Ví Dụ, Giải Thích Press Kit Là Gì

Hiệu suất

Hiệu suất là một ích lợi ít ví dụ nhất của loại quy mô này. Chúng ta cũng có thể lập luận rằng mô hình này chiếm nhiều không gian hơn quy mô truyền thống. Nhưng thời nay việc tàng trữ không phải là 1 vấn đề vì tất cả nhiều cách thức thực hiện khác biệt với chi tiêu thấp.

Hiệu suất chủ yếu không tương quan đến cách tàng trữ khoá giá chỉ trị, nhưng với trường dấu thời gian kết hợp với trường không khi nào cập nhật hoặc xoá bất kỳ thứ gì.

Do đó, khi người sử dụng đọc từ mô hình này (nơi có thể cảm dấn được hiệu suất mô hình) không nhất thiết phải lấy toàn bộ các thực thể, cũng tương tự tất cả những trường thực thể mà người ta quan tâm, chính vì họ rất có thể đã bao gồm sẵn thông tin.

Ví dụ:

Một số tài liệu đã được chế tác trong cơ sở dữ liệu tại dấu thời gian t_0.Một người sử dụng xem ứng dụng yêu cầu một trong những dữ liệu trên t_1 với máy chủ vấn đáp bằng dữ liệu mà quý khách quan trọng tâm (chỉ tài liệu mà module yêu thương cầu/có quyền truy tìm cập). Sau đó, khách hàng đăng xuất áp dụng tại dấu thời gian t_1.Tiếp đến, tại dấu thời hạn t_2 cùng t_3, máy chủ nhận tài liệu mới, cung cấp thông tin đến cho tất cả những người dùng không giống đã tương tác với ứng dụng.Và sau đó, trên t_4, khách hàng kết nối lại với thay do xem lại toàn bộ thông tin (cộng thêm tin tức mới), người sử dụng chỉ nhận thông tin mới đề xuất thiết, tránh tiêu tốn lãng phí khi chuyển lại dữ liệu quý khách hàng đã có .

*

Quá trình này khá tốt cho hiệu suất. Vậy vì kiểm soát và điều chỉnh một số chi tiết nhỏ, ANATICS lược vứt rất nhiều các bước mỗi khi truy cập cơ sở dữ liệu bằng phương pháp truy vấn: chỉ việc cung cấp những tài liệu từ mốc thời hạn này về trước.

Điều này sẽ không chỉ chuyển động ở cấp cho thực thể (các thực thể mới sẽ được gửi) bên cạnh đó ở cấp cho trường (chỉ nhờ cất hộ trường mới của những thực thể cũ), giảm dung lượng cần thảo luận về thọ dài.

Nói phương pháp khác, ANATICS đang tiến hành một bộ nhớ cache cục bộ, điều đó hoàn toàn có thể xảy ra chỉ bởi vì không cập nhật các trường, mà chỉ đào bới việc bổ sung cập nhật dữ liệu mới.

Trong trường đúng theo nào phá vỡ lẽ quy tắc “Chỉ thêm vào, ko xoá hay update dữ liệu”?

Có 2 trường hợp cần xem xét, dự phòng trường hợp bạn do dự không biết làm cố nào để quản lý:

Trường chỉ với trạng thái, bao gồm tính đổi thay động. Giả sử bạn đã gởi thông báo cho tất cả những người dùng. Họ rất có thể muốn đánh dấu là đang đọc hoặc không đọc và hoàn toàn có thể thực hiện quy trình này những lần. Vì vậy, không tồn tại giá trị thực làm sao giữ toàn bộ “lịch sử nhấp chuột”, vì thực chất của dữ liệu.Trường đại diện thay mặt cho một thực thể con, ví dụ: bạn cũng có thể có một domian gọi là “Kỹ năng” bao gồm “điểm” từ một đến n. Bạn có thể tạo một tên miền mới có tên “SkillGrades” nhưng là 1 thực thể con sẽ dễ dàng và đơn giản hơn giả dụ được lồng vào phía bên trong domian gốc. Sự việc là cụ vì có không ít khoá = ‘điểm’ cho từng lần các bạn thêm hoặc xoá điểm, chúng ta chỉ tất cả một khoá = ‘điểm’ và bạn thêm vào mặt trong.

Trong cả hai trường hợp, ANATICS update timestamp của các trường này trong mỗi lần cập nhật. Vì vậy, timestamp sẽ tiến hành công nhận là thông tin mới vào lần tiếp theo người sử dụng yêu cầu.

Năng suất

Nếu các bạn có 20-30 nhiều loại thực thể trong mô hình của chính mình (và không thật khó nhằm đạt được số lượng này), bạn cần phải có một trong những phương thức CRUD (Tạo – Đọc – update – Xoá) đến từng thực thể. Bởi vì vậy, bạn sẽ có khoảng chừng 100 cách thức được áp dụng trong từng ngôi trường hợp.

Sao chép mã hiện có xuất phát từ 1 phương thức, đổi khác tên tệp, biến đổi nội dung của phương thức, thêm/xoá trường... Mỗi lúc bạn biến hóa các ngôi trường của thực thể thì sẽ xẩy ra điều gì? Định vị tệp, chuyển đổi trường, khởi đụng lại thiết bị chủ…

Khi chúng ta có một mô hình meta, bạn sẽ nhanh chóng nhận biết rằng bạn cần phải xây dựng một số chức năng tiện ích nhằm tương tác. Mặc dù sự biệt lập với 100 thủ tục được nói ở trên là tập hợp các tiện ích nhỏ dại hơn cùng không dựa vào vào đồ sộ domain của bạn. Dưới đấy là một số tác dụng nên coi xét:

createEntity: Tạo cấu trúc cơ bạn dạng và chính là thực thể kế bên đến đúng sai (giống như toàn bộ các tác dụng khác bên dưới).addAttrsToEntity: tính năng “cập nhật”, chất nhận được thêm dữ liệu mới vào thực thể mà lại không làm mất dữ liệu trước đó.addParentKey: Thêm “thông tin quan tiền hệ” của thực thể, để có thể xác định sau này ai hoàn toàn có thể truy cập vào các dữ liệu này.getEntities: bởi _id hoặc uniqueKey, bạn nhận được dữ liệu thực thể.pickKeyCurrentValue: phần lớn thời gian công ty lập trình chỉ quan tâm đến giá trị sau cùng (hiện tại) của từng trường, bởi vậy chúng ta chuyển một thực thể cho cách tiến hành này và một số khoá để trả về và nhận ra một đối tượng người tiêu dùng có cực hiếm cuối cùng cho mỗi khoá.getRelatedEntities: cho phép trả về những thực thể ngơi nghỉ cấp công ty (tất khắp cơ thể dùng đều sở hữu quyền truy tìm cập) sống cấp người tiêu dùng hoặc những cấp khác (ví dụ: route, tham số truy nã vấn).

Bạn sẽ mong đợi có thấp hơn khoảng 50% đến 70% cân nặng mã cần được viết, nhưng cũng không nhiều lỗi hơn bởi vì đã được tiêu chuẩn hoá.

Truy xuất nguồn gốc

Nếu xoá tài liệu (vật lý) hoặc update dữ liệu tại chỗ (cách tiếp cận phổ biến nhất), nhiều người đang mất tài năng biết đầy đủ gì đã xẩy ra trong quá khứ. Đôi khi đó là những gì chúng ta thực sự mong ước (ví dụ trong 2 trường hợp đang nêu nghỉ ngơi trên) nhưng mọi lúc khác bạn chỉ cảm thấy an toàn hơn.

Bạn hiểu được cơ sở dữ liệu không chỉ là lưu giữ tài liệu có tương quan đến người tiêu dùng mà còn lưu giữ giữ các sự kiện liên quan đến từng phần dữ liệu. Điều này tốt cho các công việc sau này như:

Gỡ lỗi (debug): bạn cũng có thể “thực sự thấy các gì đã xảy ra”.Phân tích: Bạn cũng có khái niệm về tình trạng buổi giao lưu của ứng dụng đã xây dựng bằng phương pháp xem cửa hàng dữ liệu.

*

Tiếp theo, hãy xem xét các con số với biện pháp tiếp cận mới:

Meta-Model bao gồm lợi thế ví dụ trong từng chiều, ngoại trừ việc ít ví dụ hơn (mặc dù chúng ta có thể điều chỉnh ý định của bản thân theo mô hình này theo thời gian). Rước hình hình ảnh chỉ để đối chiếu 2 phương án, các con số là tuỳ ý và không dựa vào các nghiên cứu nghiêm túc.

Vậy điều gì tương quan đến việc sử dụng mô hình này trong Browser?

Đây rất có thể là “phần 2” của bài viết này, nhưng lại tóm lại, những khía cạnh thiết yếu là:

Có một bản sao toàn cục của tài liệu nhận được từ sever tại LocalStorage (hoặc thậm chí giỏi hơn vào IndexedDB). Dữ liệu này chỉ được tận dụng khi có dữ liệu mới.Sau đó, ANATICS đã điền vào một đối tượng người tiêu dùng (một đối tượng JS lớn) với tất cả dữ liệu với 2 phép đổi mới đổi:ANATICS đã chỉ có giá trị sau cùng của từng trường (dấu thời hạn sẽ không còn cần thiết)Thay do có tài liệu ở dạng , các bạn sẽ có dữ liệu hệt như name:' José ', thành phố:' Santiago '. Vị vậy, dữ liệu sẽ thoải mái và tự nhiên hơn so với mô hình tứ duy.

Điều này rất quan trọng, chính vì bất kỳ người nào cũng đều đang lưu ý đến “khả năng truy vấn cập” vào đoạn mã mà người tiêu dùng cũng có. Khi dữ liệu mới được tạo ra bởi tín đồ dùng, các bạn sẽ thêm tài liệu vào đối tượng người tiêu dùng JS lớn của bản thân và cũng thực hiện yêu cầu đến vật dụng chủ, bởi vì vậy giao diện người tiêu dùng sẽ phản chiếu các biến đổi ngay lập tức.

Xem thêm: Microsoft Surface Là Gì ? Có Nên Mua Surface Không? So Sánh Dòng Surface

Cuối thuộc nhưng không kém phần quan trọng, việc xây dựng Module quản lí trị qua quy mô Meta (Tạo – Xoá – update dữ liệu mới) cũng rất dễ thực hiện. Các bạn sẽ dùng ít đoạn mã quan trọng hơn cho mỗi bộ sưu tập, các đoạn mã các bạn viết sẽ sở hữu tính đồng bộ hơn và chỉ việc ít thành phần UI nhằm viết code.