Thực thể, thuộc tính và khóa:

Một phần của tài liệu Nghiên cứu kiến trúc CSDL trong dịch vụ dựa trên vị trÍ(LBS) trên cơ sở điện toán đám mây (Trang 54 - 56)

3.4.3.1. Loại và định danh:

Mỗi thực thể của Datastore thuộc về một loại riêng biệt dùng để phân biệt các thực thể dựa theo mục đích của truy vấn. Trong Java Datastore API, loại của thực thể phải được chỉ định khi nó được tạo ra.

Ngoài việc mỗi thực thể phải thuộc về một loại nào đó, nó còn phải có một định danh, được chỉ định khi thực thể đó được tạo ra. Vì nó là một phần khóa của thực thể, định danh sẽ gắn liền với thực thể vĩnh viễn không thay đổi được. Định danh có thể được chỉ định bằng một trong 2 cách:

- Trình ứng dụng có thể tự chỉ định tên khóa làm định danh.

- Datastore có thể tự động chỉ định định danh cho các thực thể bằng một số ID

3.4.3.2. Giao tác và nhóm các thực thể

Mọi nỗ lực để tạo, cập nhật hoặc xóa các thực thể được diễn ra trong ngữ cảnh của một giao tác. Một giao tác có thể gồm nhiều các thao tác như vậy. Để duy trì tính nhất quán của dữ liệu, một giao tác phải đảm bảo rằng tất cả các thao tác như vậy trong Datastore tạo nên một đơn vị, điều đó có nghĩa là, chỉ cần một thao tác có lỗi, thì không thao tác nào trong giao tác đó được thực hiện.

Một giao tác đơn có thể được thực hiện trên nhiều thực thể, miễn là các thực thể đó được phát triển từ một ancestor. Những thực thể như vậy được gọi là thuộc về một nhóm thực thể. Mỗi khi thiết kế mô hình dữ liệu, cần phải xác định rõ các thực thể nào cùng được thực hiện trong một giao tác. Sau đó, khi tạo các thực thể, đặt chúng vào cùng một nhóm thực thể và báo cho ancestor chung biết. Việc thông báo đó sẽ giúp App Engine biết các thực thể sẽ được cập nhật cùng nhau, do vậy sẽ có cách lưu trữ nhóm các thực thể này một cách thích hợp.

3.4.3.3. Thuộc tính và kiểu dữ liệu

Các giá trị của dữ liệu liên quan đến thực thể sẽ bao gồm một hoặc nhiều thuộc tính. Mỗi thuộc tính sẽ có tên và một hoặc nhiều giá trị. Mỗi thuộc tính có thể có nhiều

hơn một giá trị, và hai thực thể có thể có các kiểu giá trị khác nhau cho cùng một thuộc tính.

Bảng 3.3 sẽ liệt kê các kiểu dữ liệu thường dùng cho các thuộc tính trong java:

Value type Java type(s) Sort order

Integer short int long java.lang.Short java.lang.Integer java.lang.Long Numeric Floating-point number float double java.lang.Float java.lang.Double Numeric Boolean boolean java.lang.Boolean false < true

Text string (short) java.lang.String Unicode

Text string (long) com.google.appengine.api.datastore.Text None Byte string (short) com.google.appengine.api.datastore.ShortBlob Byte order Byte string (long) com.google.appengine.api.datastore.Blob None

Date and time java.util.Date Chronologic

al

Geographical point com.google.appengine.api.datastore.GeoPt By latitude, then

longitude Postal address com.google.appengine.api.datastore.PostalAdd

ress

Unicode

Telephone number com.google.appengine.api.datastore.PhoneNu mber

Unicode

Email address com.google.appengine.api.datastore.Email Unicode Google Accounts com.google.appengine.api.users.User Email

user address in Unicode order Instant messaging handle com.google.appengine.api.datastore.IMHandle Unicode

Link com.google.appengine.api.datastore.Link Unicode Category com.google.appengine.api.datastore.Category Unicode Rating com.google.appengine.api.datastore.Rating Numeric Datastore key com.google.appengine.api.datastore.Key

or the referenced object (as a child)

By path

elements

(kind, identifier, kind, identifier, ...)

Blobstore key com.google.appengine.api.blobstore.BlobKey Byte order Embedded entity com.google.appengine.api.datastore.Embedded

Entity

None

Null null None

Bảng 3. 3. Các kiểu dữ liệu của Datastore được hỗ trợ trong Java

Một phần của tài liệu Nghiên cứu kiến trúc CSDL trong dịch vụ dựa trên vị trÍ(LBS) trên cơ sở điện toán đám mây (Trang 54 - 56)