DATA MODEL LÀ GÌ

  -  

Suy cho cùng, tất cả đều nhắm tới dữ liệu: Dữ liệu tới từ bàn phím người tiêu dùng hoặc trường đoản cú nguồn mặt ngoài, tài liệu được cách xử trí theo một số trong những quy tắc nhiệm vụ và ở đầu 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 tiện lợi nhất.

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

Các điều tỉ mỷ của ứng dụng, hay chức năng bạn viết đều phải sở hữu dữ liệu tương quan để sở hữu lại chân thành và ý nghĩa cho hệ thống. Bởi vì vậy, câu hỏi đặt ra tại chỗ này là: Đâu là những yếu tố của một Data mã sản phẩm tốt? Câu trả lời sẽ được câu trả lời trong nội dung bài viết dưới đây, mà lại trước tiên hãy mang đến 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 phương pháp để tổ chức dữ liệu của ứng dụng. Bản thân Data mã sản phẩm không phải là dữ liệu, cũng chưa phải là đồ vật bạn sử dụng để lưu trữ dữ liệu (hệ thống cơ sở dữ liệu bạn chọn). Vị đó rất có thể khẳng định như sau:

Bạn rất có thể lưu trữ cùng một tài liệu sử dụng các mô hình dữ liệu khác nhau.Bạn rất có thể lưu trữ những dữ liệu không giống nhau bằng phương pháp sử dụng thuộc một quy mô dữ liệu.Có thể chuyển đổ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 hay được hotline là Migration of Data – bàn giao dữ liệu).

Định nghĩa 2: ra sao là một Data model tốt?

Nói cách khác là làm nuốm nào để rất có thể so sánh các tuỳ chọn mô hình dữ liệu khác nhau? Hay các khía cạnh nào cần được xem xét?

*

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

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


Các chuyên môn 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 mực thường là “còn tuỳ vào nhiều yếu tố”, nhưng bài viết này sẽ khuyến nghị một phương pháp tổng quát đáp ứng nhu cầu được số đông các yêu mong đặt ra. Trước tiên, hãy tìm hiểu “cách thông thường” của việc lập mô hình dữ liệu mà chắc chắn hẳn các bạn sẽ cảm thấy thân quen thuộc.

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

Bạn khẳng định các đối tượng và ở trong tính của chúng dựa vào phạm vi của vấn đề đang giải quyết, y hệt như những một số loại hộp khác biệt sẽ dùng để cất giữ phần đông loại dụng cụ khác nhau.

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

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

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

Sự thông suốt: 10 điểm. Tức là mô hình rất rõ ràng, giống như con bạn nghĩ.Tính linh hoạt: 3 điểm. Yếu đuối tố không thực sự sự tốt vì với mỗi nghành mới được yêu cầu, sẽ cần một sự đổi khác về tế bào hình.Hiệu suất: 6 điểm. Loại quy mô này không có hiệu suất tốt nhất có thể và tại sao sẽ được trình bày sau đây.Năng suất: 3 điểm. Mỗi bộ sưu tầm (hoặc bảng) sẽ đề nghị phương thức riêng để update giá trị trong mỗi 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 chúng ta phát triển 1 phần mềm trung gian để giao tiếp với cơ sở dữ liệu theo “cách tham số” nhưng vấn đề đó cũng ko tự nhiên. ANATICS sẽ khuyến cáo một cách tốt hơn để triển khai điều này.Khả năng truy vấn xuất xuất xứ: 2 điểm. Loại mô hình này cập nhật các trường dữ liệu ngay lập tức, vì vậy khi địa chỉ thay đổi, địa chỉ cửa hàng 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 lẻ ghi lại toàn bộ các biến hóa (bảng nhật ký) dẫu vậy sẽ được tách biệt cùng với phần còn lại của tế bào 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 cỗ sưu tập) lưu lại trữ toàn bộ dữ liệu miền, theo thuộc một cấu trúc và không làm mất bất kỳ dữ liệu như thế nào (không cập nhật, không xoá). Tất cả 2 nước ngoài lệ so với quy tắc này, ANATICS đã đề cập đến chúng ở vị trí sau.

*

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

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

*

Trường attrs

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

Ví dụ:

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

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

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

company_id: Đã được giải thích.user_id: Hoặc người tiêu dùng chịu nhiệm vụ về việc tạo thực thể.trạng thái: quý giá 1 cho những thực thể đang vận động và -1 cho gần như 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 ở trong tính giá trị bên phía trong mỗi ở trong tính rất có thể thuộc bất kỳ kiểu nào. Ví như nghĩ theo thuật ngữ Javascript, bạn có thể có: Chuỗi, Booleans, Số, Ngày, Mảng, Đối tượng...

*

Bây giờ, đã tới lúc xem cụ thể từng kỹ càng trong đối chiếu 5 kỹ lưỡng của Data Model.

Sự thông suốt

Đây chưa hẳn là tính năng lớn nhất của quy mô này, cũng chính vì mỗi khi chú ý vào một bạn dạng ghi, bạn phải đi sâu vào bên phía 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 mặc dù sau khi thao tác với quy mô giá trị quan trọng đặc biệt này một thời gian, các bạn sẽ “thấy mô hình rất rõ ràng”, nhưng đối với người đọc, thoạt nghe có vẻ như khó hiểu.

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

Linh hoạt

Tính linh hoạt được tích phù hợp trong mô hình meta và đó là khái niệm cốt lõi. Vậy vì khẳng định trước các trường của thực thể cho mỗi phạm vi (còn được call là “lược đồ”), ANATICS chỉ xác định cấu trúc chung này rất có thể chứa bất kỳ lược vật nào.

Tính linh hoạt thực sự mạnh mẽ trong trường đúng theo này:

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

Xem thêm: Lục Mạch Thần Kiếm 3D - Giáng Long Thập Bát Chưởng

Hiệu suất

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

Hiệu suất thiết yếu không tương quan đến cách tàng trữ khoá giá trị, nhưng với trường dấu thời gian kết phù hợp với trường không lúc nào cập nhật hoặc xoá ngẫu nhiên thứ gì.

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

Ví dụ:

Một số dữ liệu đã được sản xuất trong cơ sở dữ liệu tại dấu thời gian t_0.Một quý khách xem áp 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à khách hàng quan chổ chính giữa (chỉ dữ liệu mà module yêu thương cầu/có quyền tróc nã cập). Sau đó, quý khách hàng đăng xuất áp dụng tại dấu thời gian t_1.Tiếp đến, trên dấu thời hạn t_2 và t_3, sever nhận dữ liệu mới, cung cấp tin đến cho người dùng khác đã can dự với ứng dụng.Và sau đó, trên t_4, quý khách kết nối lại với thay vì xem lại tất cả thông tin (cộng thêm thông tin mới), người sử dụng chỉ nhận tin tức mới đề nghị thiết, tránh lãng phí khi chuyển lại dữ liệu khách hàng đã bao gồm .

*

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

Điều này không chỉ vận động ở cung cấp thực thể (các thực thể mới sẽ tiến hành gửi) ngoài ra ở cấp trường (chỉ nhờ cất hộ trường mới của những thực thể cũ), giảm dung tích cần thảo luận về thọ dài.

Nói bí quyết khác, ANATICS đang thực hiện một bộ nhớ lưu trữ cache cục bộ, điều đó có thể xảy ra chỉ vì chưng không update các trường, mà chỉ đào bới việc bổ sung dữ liệu mới.

Trong trường hợp nào phá vỡ vạc quy tắc “Chỉ thêm vào, không xoá hay update dữ liệu”?

Có 2 tình huống cần xem xét, ngừa trường phù hợp bạn băn khoăn không biết làm cố gắng nào nhằm quản lý:

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

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

Năng suất

Nếu bạn có 20-30 loại thực thể trong tế bào hình của bản thân mình (và không thực sự khó để đạt được số lượng này), bạn cần phải có một số phương thức CRUD (Tạo – Đọc – cập nhật – Xoá) mang lại từng thực thể. Vị vậy, bạn sẽ có khoảng tầm 100 phương pháp được thực hiện trong từng ngôi trường hợp.

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

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

createEntity: Tạo kết cấu cơ bạn dạng và chính là thực thể ngoại trừ đến đúng sai (giống như tất cả các tính năng khác mặt 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ể nhưng không làm mất đi dữ liệu trước đó.addParentKey: Thêm “thông tin quan tiền hệ” của thực thể, để hoàn toàn có thể xác định trong tương lai ai 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: số đông thời gian bên lập trình chỉ xem xét giá trị ở đầu cuối (hiện tại) của từng trường, do vậy các bạn chuyển một thực thể cho thủ tục này và một trong những khoá nhằm trả về và nhận thấy một đối tượng người sử dụng có quý giá cuối cùng cho từng khoá.getRelatedEntities: chất nhận được trả về các thực thể nghỉ ngơi cấp doanh nghiệp (tất toàn bộ cơ thể dùng đều phải sở hữu quyền tầm nã cập) sinh sống cấp người tiêu dùng hoặc các cấp không giống (ví dụ: route, tham số truy nã vấn).

Bạn sẽ ao ước đợi có ít hơn khoảng 1/2 đến 70% trọng lượng mã cần phải viết, nhưng cũng không nhiều lỗi hơn vì đã được tiêu chuẩn hoá.

Truy xuất mối cung cấp gốc

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

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

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

*

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

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

Vậy điều gì tương quan đến vấn đề sử dụng quy mô này vào Browser?

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

Có một phiên bản sao toàn thể của tài liệu nhận được từ sever tại LocalStorage (hoặc thậm chí giỏi hơn trong IndexedDB). Tài liệu này chỉ được tận dụng khi có tài 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 người dùng JS lớn) với tất cả dữ liệu cùng với 2 phép vươn lên là đổi:ANATICS đã chỉ có mức giá trị sau cuối của từng trường (dấu thời gian sẽ không còn cần thiết)Thay vị có dữ 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, tài 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 khôn xiết quan trọng, bởi vì bất kỳ ai ai cũng đều đang cân nhắc “khả năng tróc nã cập” vào đoạn mã mà người sử dụng cũng có. Khi dữ liệu mới được tạo thành bởi bạn dùng, bạn sẽ thêm dữ liệu vào đối tượng người sử dụng JS lớn của bản thân và cũng thực hiện yêu cầu đến trang bị chủ, vày vậy giao diện người tiêu dùng sẽ đề đạt các biến hóa ngay lập tức.

Xem thêm: Từ Điển Anh Việt " Located Là Gì ? Located Tiếng Việt Là Gì

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