So sánh OLTP và OLAP

Về cơ bản, chúng ta có thể chia dữ liệu trong một hệ thống IT thành hai mảng: Một là dữ liệu giao dịch, hai là dữ liệu phân tích. Thông thường, dữ liệu OLTP sẽ là nguồn dữ liệu cho OLAP để phục vụ cho mục đích phân tích dữ liệu chi tiết từ hệ thống OLTP thành thông tin. Hình minh họa như sau:
Dữ liệu giao dịch gọi là OLTP (Online Transaction Processing)
Ví dụ: một phần mềm kế toán, phần mềm bán hàng, phần mềm nhân sự, tiền lương, … được
nhập liệu thường xuyên bởi những người dùng cuối và dữ liệu chi tiết tới từng nghiệp vụ, mô hình thiết kế theo quan hệ thực thể, database thiết kế cho hệ thống này thường được chuẩn hóa.
Nó được đặc trưng bởi một số lượng lớn giao dịch (insert, update, delete) trong một thời gian ngắn, được thiết kế nhằm mục đích thu thập dữ liệu, duy trì tràng buộc dữ liệu trong nhiều môi trường truy cập khác nhau, đo lường hiệu quả của mô hình này chính là số lượng giao dịch trên giây.
– Dữ liệu Phân tích là OLAP (Online Analysis Processing):  đặc trưng bởi khối lượng tương đối thấp của các giao dịch. Thay vào đó, hệ thống này thường có nhiều truy vấn để tính toán tổng hợp dữ liệu. Với hệ thống này, thời gian phản hồi yêu cầu là đơn vị đo lường cho tính hiệu quả. Ứng dụng OLAP được sử dụng rộng rãi bởi công nghệ Data Minning. Dữ liệu trong ứng dụng OLAP thường được lưu trữ dưới dạng đã được tính toán, có tính lịch sử và theo mô hình đa chiều (multi-dimensional) thường là mô hình hình sao (star schema).
Bảng tổng hợp so sánh giữ OLTP và OLAP:

Nội dung
OLTP System
(Hệ thống hoạt động)
OLAP System
(Data warehouse)
Dữ liệ nguồn
Dữ liệu hoạt động, do người dùng cuối nhập vào
Dữ liệu hợp nhât. Dữ liệu OLAP đến từ nhiều nguồn khác nhau của hệ thống OLAP
Mục đích của dữ liệu
Để kiểm soát và chạy các nghiệp vụ kinh tế cơ bản, thiết yếu xảy ra hàng ngày. Phục vụ người dùng ở cấp hoạt động trong doanh nghiệp
Phục vụ mục đích lập kế hoạch, giải quyết vấn đề, hỗ trợ ra quyết định. Phục vụ cho các cấp bậc quản lý chiến lượng.
Phản ánh dữ liệu nào
Cho thấy một ảnh chụp nhanh của các quá trình kinh doanh liên tục
Số liệu cung cấp góc nhìn đa chiều các hoạt động kinh doanh trong doanh nghiệp.
Thêm và sửa dữ liệu
Thêm, sửa nhanh chóng và được tạo bởi người dùng cuối ở cấp hoạt động.
Chạy theo chu kỳ, theo lô lớn các giao dịch, như vào một giờ nhất định để tập hợp, tính toán và làm mới dữ liệu.
Truy vấn
Liên quan đến các truy vấn cơ bản, số lượng dòng dữ liệu trả về ít.
Thường truy vấn với các câu truy vấn tính toán phức tạp dựa trên khối lượng dữ liệu rất lớn.
Tốc độ xử lý
Thường rất nhanh trong một vài giây
Phụ thuộc vào khối lượng dữ liệu cần xử lý và một lần xử lý một lô query để tập hợp và tính toán dữ liệu có thể kéo dài hàng giờ đồng hồ. Tăng tốc độ xử lý bằng cách tạo index và các kỹ thuật design chuyên nghiệp
Không gian lưu trữ
Tương đối nhỏ nếu dữ liệu lịch sử được cắt giảm và lưu trữ thích hợp
Thường rất lớn, do sự tồn tại của dữ liệu tổng hợp mang tính lịch sử, cần nhiều index hơn so với OLTP
Thiết kế database
Chuẩn hóa ở mức cao, cần nhiều table
Thường không cần chuẩn hóa, ít table hơn. Thường theo 2 mô hình là Star hoặc Snowflake
Backup và phục hồi dữ liệu
Tín đồ của backup. Dư liệu hoạt động là cực kỳ quan trọng với hoạt động kinh doanh nên phải bảo trì backup cẩn thận, việc mất mát dữ liệu cũng đồng nghĩa với việc mất mát thời gian, tiền bạc và công sức nhập liệu cũng như liên quan đến trách nhiệm pháp lý.
Thay vì phải backup đều đặn, khi mất mát dữ liệu xảy ra, nhiều hệ thống OLAP thường chọn một phương pháp đơn giản là load lại dữ liệu từ các nguồn dữ liệu gốc ở các hệ thống OLTP như là một giải pháp phục hồi dữ liệu.

source: http://www.rainmakerworks.com

Data Warehouse và Business Intelligence (update ngày 17/07/2012)

Data warehouse và BI là những khái niệm mặc dù đã có từ lâu nhưng chưa được ứng dụng rộng rãi ở Việt Nam vì giá thành và sự phức tạp của nó, cũng như số lượng các DN có quy mô dữ liệu bắt buộc phải sử dụng data warehouse và BI thực sự chưa nhiều. Theo hiểu biết cá nhân thì trong các trường đại học cũng chỉ mới bắt đầu đưa vào giảng dạy trong vài năm trở lại đây.
Để hiểu được những khái niệm (tạm gọi là cao cấp trong mảng database) này, đòi hỏi người triển khai phải có kiến thức và trải nghiệm thực tế trước khi làm quen và xây dựng những hệ thống như thế. Thông thường, các tài liệu viết về những khái niệm này khá trừu tượng, khó tiếp cận cho những người mới bắt đầu làm quen. Loạt bài viết này không có tham vọng gì lớn ngoài việc cùng trao đổi và chuyển tải một số hiểu biết về data warehouse và BI tới người đọc, đặc biệt những người mới làm quen với những khái niệm này.


Data warehouse là gì?


Data warehouse được sử dụng như là một nền tảng cho hệ thống hỗ trợ ra quyết định. Nó gắn liền với khái niệm Business Inteligence (Kinh doanh thông minh). Nó được dùng để giải quyết các vấn đề gặp phải khi một tổ chức cố gắng phân tích chiến lược từ số liệu trong một hệ thống database được dùng chung với hệ thống xử lý dữ liệu trực tuyến (Online Transaction Processing – OLTP).
Một hệ thống OLTP điển hình được đặc trưng bởi một hệ thống có nhiều người sử dụng đồng thời để thêm, sửa, xóa dữ liệu. Ví dụ như một hệ thống bán lẻ, có nhiều nhân viên bán hàng đồng thời cùng nhập và chỉnh sửa dữ liệu vào hệ thống. Trong một hệ thống nhỏ, việc sử dụng cùng một hệ thống database này cho mục đích lên báo cáo thống kê, phân tích có thể chấp nhận được do khối lượng dữ liệu ít, ít người dùng. Nhưng trong một hệ thống với khối lượng dữ liệu hàng chục triệu đến trăm triệu bản ghi trên một bảng thì việc khai thác dữ liệu chung trên cùng một hệ thống database OLTP là không thể chấp nhận được vì thời gian xử lý dữ liệu rất lâu, làm cho tài nguyên hệ thống trở nên quá tải và có thể làm cho toàn bộ hệ thống bị tê liệt.

Đọc thêm »

Chạy backup database từ file bat

Trong môi trường phát triển một ứng dụng mới, database của bạn sẽ thường xuyên phải chỉnh sửa cấu trúc, dữ liệu. 
Hoặc hàng ngày bạn phải lặp đi lặp lại nhiệm vụ backup database của công ty hoặc của khách hàng.
Phiên bản SQL bạn sử dụng lại là phiên bản SQL 2008 Express không có SQL Agent để tự động chạy Job thực hiện việc bakup database. Bạn sẽ thực hiện công việc tự động này bằng cách sử dụng Task Scheduler có sẵn của Window.
Bạn không muốn mở SQL Management Studio hoặc ứng dụng của bạn lên chỉ để thực hiện một chức năng duy nhất là backup một database nào đó của công ty.
Tất cả những gì bạn muốn là double click lên một file .bat và nó sẽ thực hiện chạy một câu lệnh sql bất kỳ cho bạn, cụ thể trong bài này là thực hiện một Procedure làm công việc backup database.

Chúng ta sẽ sử dụng sqlcmd để thực hiện công việc trên.

Đọc thêm »

Xóa bộ nhớ cache của SQL Server khi test hiệu năng

Khi điều chỉnh các ứng dụng SQL Server, một mức độ nào đó, việc thử nghiệm hiệu năng thực thi của các thủ tục SQL là cần thiết. Tùy chọn Index, thiết kế bảng, tùy chọn khóa (locking table)  những vấn đề có thể được sửa đổi để tăng hiệu suất thực thi. Khi chạy các tình huống test, phải chắc chắn các thủ tục, câu lệnh SQL phải được bắt đầu ở cùng một trạng thái tại mỗi thời điểm chạy thử. Bộ nhớ cache (đôi khi được gọi là bộ đệm) cần phải được xoá đi. Điều này nhằm tránh việc các dữ liệu và (hoặc) kế hoạch thực thi (excution plan) đang được lưu trữ, do đó làm thất bại các thử nghiệm tiếp theo. Để xoá bộ nhớ cache của SQL Server, chúng ta chạy hai câu lệnh sau:


DBCC DROPCLEANBUFFERS

DBCC FREEPROCCACHE

Câu lệnh đầu tiên để xóa tất cả dữ liệu trong bộ nhớ cache. 
Câu lệnh thứ hai xóa bộ nhớ cache lưu trữ các thủ thục (store procedure).


Sau khi chạy hai lệnh trên, mọi thủ tục, câu lệnh sẽ được đặt vào “điểm xuất phát” như nhau. Do đó việc so sánh sẽ trở nên “công bằng” và chính xác hơn.


Nguồn: (http://www.devx.com)

Các thủ tục, bảng, view quan trọng trong Sql Server

Vấn đề:
Bài viết này sẽ trình bày một số phương pháp để liệt kê ra danh sách các database. Table, view, hàm, thủ tục, constraint, index… Chúng rất hữu ích khi chúng ta muốn biết thông tin về một đối tượng nào đó về database khi chúng ta viết các câu lệnh truy vấn.  Mặc dù chúng có thể xem thông qua cửa sổ Object Explorer, nhưng khi chúng ta sử dụng câu lệnh truy vấn những thông tin này, chúng có thể thêm các điều kiện lọc tùy ý một cách nhanh chóng để tìm ra thức chúng ta cần tìm.

Giải pháp:
Chúng ta sẽ tìm hiểu một số thao  tác làm thể sao để:
         Liệt kê danh sách database trong SQL server ở kết nối hiện tại
         Liệt kê danh sách bảng trong database.
         Liệt kê danh sách các thủ tục (Procedure)
         Liệt kê danh sách View
         Liệt kê danh sách Hàm
         Liệt kê danh sách Trigger
         Liệt kê danh sách Cột trong một bảng
         Lấy tổng số dòng trong một bảng
         Liệt kê danh sách Index
         Lấy khai báo của một View
         Liệt kê danh sách Check Constraint
         Tìm kiếm các bảng được sử dụng trong một Procedur

Đọc thêm »

Sử dụng Change Tracking trong SQL Server 2008 (Phần cuối)

Sau một thời gian nghiên cứu, nay chúng ta sẽ đi đến phần cuối cùng của loạt bài về Change Tracking trong SQL Server 2008, người dịch bài này thấy có rất nhiều điều có thể ứng dụng từ chức năng này trong SQL Server 2008. Trong đó, một trường hợp mà chúng ta có thể xây dựng một cơ chế đồng bộ dữ liệu giữa hai database, trong đó dữ liệu đã được thay đổi kể từ lần đồng bộ cuối cùng sẽ do Change Tracking cung cấp, và chúng ta chỉ cần đồng bộ những dòng dữ liệu đã được thay đổi này, thậm chí chỉ cần đồng bộ các cột đã được thay đổi, có nghĩa là chúng ta chỉ lấy ra những dữ liệu cần thiết từ dữ liệu nguồn, truyền qua mạng internet, LAN, … đến database đich. Vi dữ liệu được lấy ra không dư thừa, nên sẽ tăng tốc độ cho việc đồng bộ dữ liệu cũng như độ chính xác của nó.
Với đặc điểm này, chũng ta cũng có thể xây dựng một chức năng nhỏ trên ứng dụng, cho phép ứng dụng nhắc nhở tới người dùng những dữ liệu nào chưa được đồng bộ, theo một khoảng thời gian nhất định. 
Trong loạt ví dụ sau chúng ta sẽ tìm hiểu:

  1. Kích hoạt Change Tracking ở mức Database và mức Table.
  2. Truy vấn các bảng hệ thống cung cấp thông tin về thiết lập Change Tracking.
  3. Tìm hiểu các hàm dùng để truy vấn các thông tin thay đổi  với Change Tracking.
  4. Vô hiệu chức năng Change Tracking.

Đọc thêm »

Sử dụng Change Tracking trong SQL Server 2008 (Phần 3)

So sánh Data Change Capture và Change Tracking
SQL Server 2008 giới thiệu hai tính năng theo dõi sự thay đổi dữ liệu, cho phép các ứng dụng xác định những thay đổi gây ra bởi các hoạt động DML (Thêm, sửa, xóa) đã được thực hiện cho các bảng người dùng trong cơ sở dữ liệu. Trước khi các tính năng này được cung cấp, nhà lập trình phải tự tạo ra các cơ chế dùng để theo dõi sự thay đổi dữ liệu bên trong các ứng dụng. Những cơ chế này thường kéo theo phải thay đổi lược đồ (schema) của bảng cần theo dõi hoặc phải sử dụng trigger. Tuy nhiên với hai tính năng được cung cấp với SQL 2008 này thì không cần phải thực hiện các biện pháp trên.

Đọc thêm »

Sử dụng Change Tracking trong SQL Server 2008 (Phần 1)

Vấn đề:
Bài trước đã nói về sử dụng và cấu hình Change Data Capture, trong bài này, chúng ta tiếp tục nghiên cứu tiếp một tính năng nữa là Change Tracking.
Change Tracking là một tính năng nhỏ cung cấp cơ chế đồng bộ dữ liệu giữa các bảng người dùng trong các ứng dụng.
Change Tracking cho phép ứng dụng chỉ nhận những thay đổi ròng (net changes) đã làm trên các bảng người dùng, cùng với các thông tin về những sự thay đổi đó.  Điều này có nghĩa là nếu một bản ghi được chỉnh sửa hơn 1 lần, thì CT chỉ theo bảo trì và lưu trữ về sự thay đổi cuối cùng.
Với việc Change Tracking được tích hợp vào SQL Server 2008, các lập trình viên sẽ không còn phải xây dựng các giải pháp phức tạp mà ở đó họ phải viết hàng ngàn câu lệnh (như sử dụng trigger, cột timestamp, và viết code để dọn dẹp thông tin lưu trữ)  trong các bản SQL trước để theo dõi sự thay đổi dữ liệu nữa. Việc này đã có SQL Server làm thay.
Change Tracking một khối xây dựng quan trọng cho các ứng dụng đồng bộ hóa sao chép dữ liệu trong các tình huống mà ở đó các giải pháp đồng bộ dữ liệu khác không làm việc (hoặc không thể làm việc) cần một giải pháp tùy chỉnh theo ý nhà phát triển. Ví dụ, một kịch bản yêu cầu đồng bộ hóa dữ liệu từ các kho dữ liệu không phải trên cơ sở dữ liệu SQL Server hoặc trong trường hợp lược đồ của các kho dữ liệu lưu trữ là rất khác nhau.
Trong bài này, chúng ta sẽ tìm hiểu chi tiết Change Tracking là gì, nó làm việc như thế nào, cách cấu hình, một tình huống có thể dùng Change Tracking, và nó khác gì so với CDC.
Change Tracking có trong tất cả các phiên bản của SQL Server 2008.

Đọc thêm »

Sử dụng Change Data Capture trong SQL Server 2008

Vấn đề:
Change Data Capture là một tính năng mới trong SQL Server, nó được thiết kế để “chụp” lại các hoạt động như Insert, Update, Delete áp dụng trên các bảng dữ liệu trong Sql Server. Và làm cho thông tin chi tiết về các sự thay đổi có sẵn trong những định dạng liên quan có thể sử dụng một cách đơn giản.
Một ví dụ tốt về tính năng này có thể được sử dụng trong việc thực hiện cập nhật định kỳ vào một kho dữ liệu.
Một trong những yêu cầu của quá trình trích xuất (Etrack), chuyển đổi (Transform), và tải dữ liệu (Load) gọi tắt là ETL là cập nhật các dữ liệu đã được thay đổi kể từ lần cuối cùng mà quá trình ETL chạy. Trước khi có CDC, chúng ta làm việc này đơn giản bằng cách truy vấn lần thay đổi cuối cùng từ cột LastUpdate trong bảng dữ liệu nguồn để nhận diện dòng dữ liệu nào đã được thay đổi, mặc dù phương pháp này cũng khá hiệu quả, tuy nhiên nó lại không thể được sử dụng cho việc nhận biết là các dòng dữ liệu nào đã được xóa, thêm vào đó, chúng ta cũng không thể biết là cái gì đã được thay đổi khi nào, chúng ta chỉ đơn giản là truy xuất được trạng thái hiện tại của các dòng đã được nhận diện là có thay đổi. CDC cung cấp giải pháp để giải quyết các vấn đề đã đặt ra ở trên và còn hơn thế nữa.
Change Data Capture chỉ có trên các phiên bản: Enterprise, Developer và Evaluation.

Đọc thêm »