Các bài toán trong quá trình xây dựng hệ thống

Một phần của tài liệu Thiết kế và phát triển bộ công cụ tạo quảng cáo đa đối tượng và tối ưu hóa lịch trình cho các mạng xã hội luận văn ths (Trang 47 - 52)

CHƯƠNG 3. XÂY DỰNG BỘ CÔNG CỤ CẢI TIẾN QUẢNG CÁO TRÊN MẠNG XÃ HỘI FACEBOOK

3.3 Các bài toán trong quá trình xây dựng hệ thống

3.3.1 Bài toán quản lý thời gian quảng của các tài khoản Facebook

Facebook là một mạng xã hội lớn do đó lượng người dùng Facebook rất lớn, mỗi người dùng Facebook ở các vùng địa lý khác nhau và có các múi thời gian khác nhau được gọi là timezone [14]. Việc quản lý timezone của người dùng đóng vai trò rất quan trọng trong việc chạy quảng cáo và có ảnh hưởng đến lợi nhuận sinh ra của quảng cáo. Hệ thống quảng cáo Facebook đã xử lý tốt việc phân loại người dùng theo các vùng địa lý để có thể xác định đúng timezone từ đó xác định đƣợc thời gian chạy quảng cáo đúng với yêu cầu người dùng và không nhầm lẫn dẫn đến việc chạy sai quảng cáo. Bài toán đặt ra cho hệ thống cải tiến công cụ quảng cáo nói chung và Facebook nói riêng, phải quản lý được timzone của khách hàng sử dụng để giúp người dùng tạo quảng cáo đƣợc chính xác

Giải quyết bài toán việc quản lý timezone của các tài khoản quảng cáo cho hệ thống đƣợc thực hiện bách cách đồng bộ tất cả các tác vụ liên quan đến tính toán thời gian của hệ thống theo giờ UTC - là giờ quốc tế và chuyển sang dạnh unixtime, sau đó tạo ra bảng timezone có tác dụng đối chiếu với sự sai khác timzone tài khoản Facebook và giờ UTC ví du: timzone tài khoản Facebook Việt Nam = UTC + 7. Mỗi tài khoản quảng cáo Faebook đƣợc xác định bởi một mã timzone nhất định, từ mã timezone hệ thống có thể xác định quản lý timzone và dễ dàng tìm ra sự sai khác múi giờ giữa tài khoản Facebook và giờ quốc tế - UTC

Bảng 3.10: Bảng timezone

Timezone id Zone Difference time

0

1 TZ_AMERICA_LOS_ANGELES -8

15 TZ_AUSTRALIA_SYDNEY 11

28 TZ_AMERICA_VANCOUVER -7

42 TZ_ASIA_SHANGHAI 8

58 TZ_EUROPE_LONDON 0

62 TZ_ASIA_HONG_KONG 8

74 TZ_EUROPE_ROME 1

77 TZ_ASIA_TOKYO 9

79 TZ_ASIA_SEOUL 9

128 TZ_ASIA_SINGAPORE 8

136 TZ_ASIA_TAIPEI 8

140 TZ_ASIA_HO_CHI_MINH 7

3.3.2 Bài toán quản lý giá trị đồng tiền của các tài khoản Facebook

Người dùng hệ thống quảng cáo của Facebook đến từ nhiều vùng khác nhau, ngoài sự khách nhau về timezone , còn khác nhau về giá trị đồng tiền ở mỗi vùng.

Việc quản lý đƣợc giá trị đồng tiền cho các tài khoản Facebook cũng đóng vai trò quan trọng. Việc tạo quảng cáo trên Facebook không thể thiếu việc xác định ngân sách cho việc chạy quảng cáo. Với mỗi đồng tiền trên thế giới lại có giá trị khác nhau, Facebook sử dụng thuật ngữ currency [15] để xác định và quản lý giá trị đồng tiền của các tài khoản Facebook. Mỗi một tài khoản Facebook đƣợc xác định bởi một mã currency ví dụ: USD, JPY. Yêu cầu đặt ra cho hệ thống quảng cáo đƣợc phát triển là cần phải phân biệt đƣợc currency của khách hàng và phân biệt rõ khác nhau giữa các currency. Lấy vị dụ: khách hàng nhập một số interger là 2 hệ thống cần phải chuyển đổi giá trị tiền tệ ra 2 United States Dollar hoặc 2 Japanese Yen.

Để giải quyết vấn đề tiền tệ của khách hàng, hệ thống cần tạo ra cách thức chuyển đổi giá trị đồng tiền cho từng loại currency . Để phân biệt các currency của khách hang hệ thống quảng cáo của Facebook cung cấp khái niệm offset . Offset đƣợc coi là giá trị bù để tính toán và xử lý currency, ví dụ:

offset của United States Dollar là 100 và currency là USD

offset của Japanese Yen là 1 và currency là JPY

 Toàn bộ các tác vụ của hệ thống sẽ sử dụng currencyoffset để tính toán giá trị quảng cáo và dùng để tương tác với Facebook. Hệ thống quảng cáo Facebook sẽ chỉ xử lý các con số interger, ví dụ người dùng nhập số interger 2:

offset của United States Dollar là 100 và currency là USD. Facebook xử lý giá trị 2 * 100 = 200

offset của Japanese Yen là 1 và currency là JPY. Facebook xử lý giá trị 2 * 1 = 2

Bảng 3.11: Bảng Currency

Currency Offset Symbol Name

USD 100 $ United States Dollar

JPY 1 ¥ Japanese Yen

KRW 1 ₩ Korean Won

MYR 100 RM Malaysian Ringgit

HKD 100 HK$ Hong Kong Dollar

SGD 100 S$ Singapore Dollar

AUD 100 A$ Australian Dollar

EUR 100 € Euro

ZAR 100 R South African Rand

TWD 1 NT$ Taiwan Dollar

THB 100 ฿ Thai Baht

3.3.3 Bài toán lập lịch chạy quảng cáo theo khung giờ mong muốn

Vấn đề chung cho mạng xã hội quảng cáo Facebook và các mạng xã hội quảng cáo khác là việc thiếu linh hoạt điều chỉnh thời gian chạy quảng cáo. Hệ thống cải tiến công cụ quảng cáo cần phải xây dựng đƣợc cơ chế giúp khách hàng có thể điều chỉnh khung giờ chạy quảng cáo theo mong muốn. Bài toán điều chỉnh khung giờ chạy quảng cáo có thể đƣợc coi nhƣ bài toán lập lịch chạy quảng cáo theo các mốc thời gian xác định trước. Có nhiều phương pháp để lập lịch tự động trong luận văn này sử dụng giải pháp cho bài toán lập lịch quảng cáo là sử dụng công nghệ lập lịch tự động trên linux Crontab bởi cách sử dụng đơn giản và dễ dàng cài đặt, cấu hình.

Crontab [16] trên server linux là một tiện ích cho phép thực hiện các tác vụ tự động theo định kỳ. Để giải quyết bài toán lập lịch chạy quảng cáo, Crontab sẽ giúp hệ thống chạy tự động các tác vụ liên quan đến thời gian cần chạy của quảng cáo. Trong trường hợp quảng cáo cần đƣợc chạy, Crontab sẽ tự động gửi yêu cầu chạy quảng cáo. Trong trường hợp quảng cáo cần phải dừng, Crontab sẽ tự động yêu cầu Facebook dừng chạy quảng cáo. Việc sử dụng crontab sẽ giúp việc lập lịch quảng cáo trở nên dễ dàng hơn, ngoài ra việc lập lịch quảng cáo sẽ đƣợc thực hiện một cách tự động. Hệ thống sẽ sử dụng dữ liệu được lưu trong table delivery_schedules và kết hợp với Crontab để giải quyết bài toán. Cấu trúc của bảng delivery_schedules đƣợc mô tả nhƣ sau:

Bảng 3.12: Cấu trúc bảng delivery_schedules Attribute

Field

Key type

Data type Remarks

delivery_schedule_id PK int ID của bảng delivery_schedules

profile_id int ID của khách hàng

campaign_id int ID của Ad Campaign

param text Thông số cài đặt thời gian chạy quảng cáo

Trong table delivery_schedules thành phần quan trọng nhất là param lưu thông tin thời gian chạy của quảng cáo, giá trị của param theo định dạng json ví dụ:

“{"status":"1","day":["2","3","5","6"]}”. Theo ví dụ, ngày chạy quảng cáo là các ngày thứ 2,3,5,6 các ngày còn lại quảng cáo sẽ đƣợc dừng. Nhiệm vụ của crontab đƣợc lập lịch để chạy tác vụ kiểm tra thời gian quảng cáo, nếu ngày chạy crontab nằm trong các ngày của param thì hệ thống sẽ tự động gửi yêu cầu upload trạng thái active của quảng cáo và nếu ngày chạy của crontab không nằm trong param hệ thống sẽ gửi yêu cầu upload trạng thái paused của quảng cáo.

3.3.4 Bài toán quản lý các quảng cáo trong Database

Như đã trình bày trong chương mô hình quảng cáo của Facebook. Hệ thống quảng cáo Facebook đƣợc chia thành các thành phần : Ad Campaign, Ad Set, Ad Group, Creative . Yêu cầu đặt ra với hệ thống hỗ trỡ quảng cáo Facebook phải tuân thủ mô hình Facebook mới có thể tương tác được với Facebook API. Mối quan hệ giữa các thực thể hệ thống đƣợc miêu tả trong “mô hình quan hệ thực thể hệ thống”. Mối quan hệ này rất phước tạp, trong quá trình upload các quảng cáo lên Facebook phải tuân theo trình tự upload.

1. Upload Ad Campaign 2. Upload Ad Set

3. Upload Ad Group 4. Upload Creative

Theo mô hình quan hệ giữa các thực thể phải tiến hành nhiều quá trình join giữa các table để tìm ra đƣợc các quảng cáo cần đƣợc upload lên Facebook. Hệ thống hỗ trợ quảng cáo Facebook có thể tạo nhiều quảng cáo có các targeting khác nhau trong một lần tạo do đó vấn đề đặt ra là cần phải xác định đƣợc các quảng cáo cần upload, thứ tự upload quảng cáo phải đúng theo trình tự và phải đáp ứng đƣợc hệ thống có số lƣợng người dùng lớn tạo quảng cáo trong cùng thời điểm. Để giải quyết vấn đề này vẫn đảm bảo mô hình quan hệ thự thể và hệ quản trị cơ sở dữ liệu Mysql, hệ thống tạo ra bảng Synchronize cues lưu thông tin các quảng cáo cần được xử lý. Cấu trúc của bảng Synchronize cues nhƣ sau:

Bảng 3.13: Cấu trúc bảng synchronize_cues Attribute

Field

Key type

Data type Remarks

synchronize_cue_id PK bigint ID của bảng Synchronize cues

transaction_id varchar Mã code sinh ra ngẫu nhiên trong một phiên xử lý quảng cáo, phụ thuộc vào thời gian quảng cáo đƣợc xử lý. Mỗi một thời điểm có 1 transaction_id duy nhất

profile_id int ID của khách hàng

sync_target int Đối tƣợng cần xử lý

Sync target = 0: Ad Campaign Sync target = 1: Ad Set

Sync target = 2: Ad Group Sync target = 3: Creative created datetime Thời gian tạo quảng cáo

Giải quyết vấn đề quản lý quảng cáo đƣợc sinh ra bởi nhiều khách hàng tại cùng thời điểm hay các thời điểm khác nhau. Mỗi khi quảng cáo đƣợc tạo ra, bảng Synchronize cues lưu thông các quảng cáo cần được xử lý theo ID của khách hàng. Hệ thống Batch Upload quảng cáo sẽ xử lý tự động các quảng cáo theo thứ tự trong bảng Synchronize cues, điều này đảm bảo rằng hệ thống có thể hỗ trợ việc tạo quảng cáo cho nhiều khách hàng tại cùng thời điểm và không gây nhầm lẫn giữa các quảng cáo của các khách hàng.

Gải quyết vấn đề quản lý các quảng cáo cần đƣợc xử lý mà hạn chế join các table. Hệ thống định nghĩa trong bảng Synchronize cues thộc tính transaction_id. Mỗi một Ad Campaign, Ad Set, Ad GroupCreative đƣợc tạo ra hay cần đƣợc xử lý cùng nhau tại một thời điểm sẽ cùng có một transaction_id giống với transaction_id trong bảng Synchronize cues. Transaction_id sinh ra là ngẫu nhiên theo thời gian dó đó hai mốc thời gian khác nhau không thể có cùng transaction_id. Khi cần xử lý tác vụ quảng cáo, hệ thống chỉ cần xử lý các quảng cáo có cùng transaction_id điều này

cũng hạn chế việc tìm kiếm quảng cáo trong các table giúp việc xử lý quảng cáo khoa học và rõ ràng hơn.

3.3.5 Bài toán quản lý upload quảng cáo

Mạng xã hội quảng cáo Facebook là một hệ thống quảng cáo lớn, hỗ trợ lƣợng người dùng lớn, do đó việc quán lý upload quảng cáo cho số lượng người dùng lớn để đảm bảo hiệu năng cho hệ thống cải tiến công cụ quảng cáo là hết sức quan trọng và cần thiết.

Đối với hệ thống quảng cáo Facebook, sau khi thay đổi bất kỳ nội dung hay chức năng nào của quảng cáo, Facebook yêu cầu người dùng tiến hành upload quảng cáo để đồng bộ với các hệ thống phân tán của Facebook và mỗi lần đăng nhập vào hệ thống quảng cáo Faceboo, khách hàng được yêu cầu download để đồng bộ quảng cáo. Việc người dùng luôn phải upload sau mỗi lần tạo quảng cáo gây bất tiện. Để cải thiện bài toán upload tự động hệ thống cải tiến công cụ quảng cáo sử dụng crontab để cấu hình việc tự động upload khi có quảng cáo mới, việc tự động upload quảng cáo sẽ mang lại tiện ích cho khách hàng sử dụng. Crontab sử dụng table Synchronize cues để kiểm tra các quảng cáo cần đƣợc upload theo từng profile khách hàng. Các quảng cáo nằm trong Synchronize cues sẽ đƣợc tự động upload lên Facebook

Như đã nói bài toán upload quảng cáo cho số lượng người dùng lớn nhằm đảm bảo hiệu năng rất quan trọng với hệ thống. Việc sử dụng Crontab upload quảng cáo của từng profiles trong Synchronize cues sẽ mất rất nhiều thời gian, đối với số lƣợng khách hàng của hệ thống lớn crontab sẽ phải chạy rất lâu. Ngoài ra mặt hạn chế của PHP chƣa hỗ trợ xử lý đa luồng nên việc upload quảng cáo một lúc nhiều profile rất khó khăn. Để giải quyết bài toán upload quảng cáo số lƣợng profile lớn mà vẫn giữ đƣợc cầu trúc database và vẫn không thay đổi công nghệ đang sử dụng, hệ thống sử dụng extension của PHP là PCNTL. PCNTL [17] đƣợc định nghĩa là Process Control và là một extension của PHP, extension này hỗ trỡ giúp PHP tạo ra các process trên server linux. Sử dụng PCNTL đơn giản và dễ dàng cài đặt trên server, chú ý rằng PCNTL chỉ chạy đƣợc trên các Server linux không hỗ trợ Windows. Việc cấu hình tạo các process thông qua PCNTL cần phải đƣợc xem xét kỹ trên từng server để đảm bảo hiệu năng của server. Trong bài toán upload nhiều profile, PCNTL sẽ giúp chạy crontab của hai hay nhiều profile khách hàng một lúc điều này sẽ giúp cải thiện hiệu năng của việc upload quảng cáo, khách hàng sẽ không phải đợi quá lâu.

Một phần của tài liệu Thiết kế và phát triển bộ công cụ tạo quảng cáo đa đối tượng và tối ưu hóa lịch trình cho các mạng xã hội luận văn ths (Trang 47 - 52)

Tải bản đầy đủ (PDF)

(58 trang)