View allAll Photos Tagged CodeGym
Chắc hẳn, các bạn đã nghe nhiều về transaction rồi. Nhưng không phải ai cũng hiểu và sử dụng thành thạo transaction. Nên bài hôm nay mình sẽ phân tích chi tiết về transaction và dựa trên ví dụ để chúng ta hiểu rõ hơn về nó.
1. Transaction là gì và mục đích sử dụng
Là kỹ thuật xử lý nhiều tiến trình được thực hiện tuần tự.
Các tiến trình đó có thể là: create, read, update hoặc delete.
Nếu tất cả tiến trình thực hiện thành công, thì transaction sẽ được commit và dữ liệu sẽ được cập nhật vào DB.
[Database] Transaction (Part 1)
[Database] Transaction (Part 2)
2. Ví dụ về transaction
Transaction bên dưới đang có 2 tiến trình:
Thực hiện rút tiền từ tài khoản #1.
Sau đó, gửi tiền vào tài khoản #2.
Nhưng nếu tiến trình 1 bị lỗi, tức là tiền không thể rút từ tài khoản 1, thì tiến trình 2 không thể thực hiện, dữ liệu sẽ được phục hồi về ban đầu.
Tương tự như vậy, nếu tiến trình 1 thành công, nhưng tiến trình 2 gặp lỗi, thì dữ liệu không thể được commit và sẽ toàn bộ dữ liệu ở các tiến trình trước cũng sẽ phục hồi về ban đầu.
Cuối cùng, cả 2 tiến trình đều thực hiện thành công thì toàn bộ dữ liệu sẽ được commit vào DB.
3. Hướng dẫn cách tạo transaction
Cú pháp
Để bắt đầu một transaction:
START TRANSACTION;
Khi muốn trả về trạng thái DB ban đầu trước khi transaction hoạt động, hoặc có thể trả về SAVEPOINT:
ROLLBACK;
Cuối cùng, để cập nhật dữ liệu ở transaction đến DB:
COMMIT;
Ví dụ
Bạn còn nhớ ví dụ ở bài STORED PROCEDURE (SP) không? Nó sẽ thực hiện tạo ra thông tin khám bệnh, bằng cách đăng ký dữ liệu lần lượt vào các table medical_record, doctor_treatment. Nhưng trong trường hợp dữ liệu đăng ký thành công ở table medical_record, sau đó thực hiện thêm dữ liệu vào table doctor_treatment lại xảy ra lỗi. Vậy thì dữ liệu ở table trước đó (tức là table medical_record) đang bị dư thừa và có thể gây ra sự không đồng bộ về việc liên kết dữ liệu sau này.
Nên mình sẽ áp dụng transaction vào SP để giải quyết vấn đề trên, nếu một trong các tiến trình xảy ra lỗi, thì sẽ phục hồi lại trạng thái của DB về ban đầu.
delimiter //
CREATE PROCEDURE sp_register_treatment_transaction (p_doctor_id INT
, p_patient_id INT
, p_fee DOUBLE)
BEGIN
START TRANSACTION;
BEGIN
DECLARE EXIT HANDLER FOR SQLEXCEPTION ROLLBACK;
INSERT INTO medical_record (date_of_examination, fee, patient_id)
VALUES (CURDATE(), p_fee, p_patient_id);
INSERT INTO doctor_treatment (doctor_id, record_id)
VALUES (p_doctor_id, LAST_INSERT_ID());
SELECT d.doctor_id, d.last_name, mr.fee, p.patient_id, p.`name`
FROM doctor d
INNER JOIN doctor_treatment dt ON d.doctor_id = dt.doctor_id
INNER JOIN medical_record mr ON dt.record_id = mr.record_id
INNER JOIN patient p ON mr.patient_id = p.patient_id
WHERE mr.record_id = LAST_INSERT_ID();
COMMIT;
END;
END //
delimiter ;
Với dòng DECLARE EXIT HANDLER FOR SQLEXCEPTION ROLLBACK, nó sẽ giúp thoát SP và rollback lại toàn bộ dữ liệu khi xảy ra lỗi ở một dòng lỗi nào đó trong transaction.
4. Các tính chất của transaction
Bao gồm 4 tính chất, kết hợp lại thành cụm là ACID.
4.1. Atomicity
Toàn bộ các tiến trình đều thành công, thì transaction sẽ được đánh giá là thành công. Ngược lại, nếu có một điểm bị lỗi thì tất cả tiến trình trước đó sẽ rollback.
4.2. Consistency
Các dữ liệu được thực hiện ở transaction phải đảm bảo theo các quy định, ràng buộc (constraints), cascade và trigger.
4.3. Isolation
Tất cả transaction sẽ thực hiện độc lập với các transaction khác.
4.4. Durability
Những cập nhật đến từ transaction vẫn luôn đảm bảo thành công, thậm chí nếu hệ thống có bị lỗi.
Kết luận
Tóm lại, một chuỗi lệnh được xảy ra và các lệnh cần có tính ảnh hưởng lẫn nhau thì transaction sẽ là giải pháp cho vấn đề này. Và các dữ liệu từ transaction sẽ luôn được đảm bảo.
Nguồn: codegym.vn/blog/2023/11/22/transaction-va-cac-tinh-chat/
Khóa học lập trình Java theo chương trình Coding Bootcamp tại CodeGym Hà Nội giúp học viên trở thành lập trình viên chuyên nghiệp sau 6 tháng, làm chủ các kiến thức lập trình nói chung và Java web nói riêng. Học lập trình thôi là chưa đủ, để làm được việc và phát triển lâu dài với lập trình, bạn cần có các kỹ năng
- Kỹ năng chuyên môn:
Tuân thủ tốt các nguyên tắc mã sạch thông dụng
Sử dụng thành thạo ngôn ngữ Java
- Kỹ năng học tập làm và làm việc suốt đời:
Kỹ năng quản lý thời gian công việc
Giao tiếp và cộng tác
Kỹ năng tạo CV và phỏng vấn tuyển dụng,
- Việc làm:
Được đào tạo toàn diện các kỹ năng nghề nghiệp và sẵn sàng làm việc ngay khi học xong.
Cam kết việc làm bằng văn bản hợp đồng
Tham gia khóa học Java web chuyên nghiệp tại CodeGym Hà Nội: hanoi.codegym.vn/khoa-hoc-java/
Trụ sở: Số 23, Lô TT01, KĐT Moncity, Hàm Nghi, Mỹ Đình 2, Nam Từ Liêm, Hà Nội.
Cơ sở 2: Tầng 2, Tòa Hapulico 17T4, Nguyễn Huy Tưởng, Q.Thanh Xuân, Hà Nội.
Email: hanoi@codegym.vn
Hotline: 0246 253 8829
#codegymhanoi #khoahocjava #khoahocjavaweb #hoclaptrinhweb #javaweb
Đối với những người tham gia khóa học lập trình ngắn hạn vấn đề bằng cấp và đầu ra xin việc sẽ có nhiều khó khăn. Bạn cần tìm trung tâm uy tín và có cam kết về việc làm sau khi hoàn thành xong khóa học. CodeGym là đơn vị đào tạo công nghệ thông tin với hệ thống lập trình hiện đại. Đơn vị chúng tôi tự hào sẽ lựa chọn thông thái nhất của học viên học lập trình ngắn hạn. Các khóa học lập trình thực chiến tại CodeGym gồm có khóa học lập trình cho người mới bắt đầu và khóa học dành cho những người đã có nền tảng về CNTT. Khoá học lập trình ngắn hạn tại CodeGym Hai ngôn ngữ lập trình nổi tiếng đó là khóa học Java và khóa học Python. CodeGym sẽ cam kết về chất lượng cũng như việc làm cho các học viên sau khi tốt nghiệp với mức lương từ 10 đến 15 triệu. - dt6rijozm4 - codegym.vn/blog/2023/01/07/khoa-hoc-lap-trinh-ngan-han/
Mô tả công việc
Tư vấn sản phẩm/dịch vụ đào tạo của CodeGym và giải đáp thông tin liên quan cho khách hàng;
Tìm kiếm, phát triển dữ liệu khách hàng từ các nguồn khác để đảm bảo chỉ tiêu tuyển sinh;
Cập nhật dữ liệu khách hàng lên phần mềm và các biểu mẫu quản lý theo quy định;
Thống kê, báo cáo dữ liệu tuyển sinh và các vấn đề liên quan định kỳ hoặc theo yêu cầu;
Tham gia các phiên họp và đào tạo định kỳ hoặc theo yêu cầu;
Các công việc khác theo sự phân công của Cán bộ quản lý.
Yêu cầu ứng viên
Tốt nghiệp Trung cấp, Cao đẳng, Đại học ưu tiên ứng viên tốt nghiệp các chuyên ngành quản trị kinh doanh, kinh tế, marketing, tâm lý, giáo dục, ngoại ngữ…;
Có khả năng thuyết trình trước đám đông, khả năng thuyết phục khách hàng, khả năng nắm bắt tâm lý khách hàng;
Có khả năng giao tiếp tốt; giọng nói chuẩn (không nói ngọng);
Ngoại hình sáng, nhanh nhẹn, trung thực, tự tin, ham học hỏi, nhiệt huyết trong công việc;
Có sức khỏe tốt, trung thực, nhiệt tình, trách nhiệm và chịu được áp lực trong công việc…;
Có kinh nghiệm trong các vị trí: nhân viên kinh doanh, telesales, tiếp thị; tư vấn…;
Có kinh nghiệm trong công tác tuyển sinh và tư vấn giáo dục là một lợi thế lớn;
Tự túc máy tính xách tay cá nhân.
Quyền lợi
Mức lương: 15 – 25 triệu;
Môi trường làm việc tử tế, trẻ trung, thân thiện, chuyên nghiệp, đề cao tinh thần học tập và phát triển;
Tham gia BHYT, BHXH, BHTN và các chế độ phúc lợi theo quy định của Công ty (như sinh nhật, thưởng các ngày lễ, tết);
Khám sức khỏe định kỳ hàng năm;
Được tham gia giờ học tập nội bộ 1 lần/tuần;
Tham gia các khóa đào tạo định kỳ về quản lý công việc và nâng cao chuyên môn;
Du lịch công ty/team building ít nhất 2 lần/năm;
Thưởng Quý;
Review lương 2 lần/năm;
Nghỉ phép 12 ngày/năm.
Địa điểm làm việc
Hà Nội: Trung tâm đào tạo CodeGym Hà Nội – Căn hộ TT01.23, khu đô thị Moncity, Hàm Nghi, Mỹ Đình., Nam Từ Liêm;
Hồ Chí Minh: Trung tâm đào tạo CodeGym Sài Gòn – Số 21k Nguyễn Văn Trỗi, Q. Phú Nhuận, TP. Hồ Chí Minh, Phú Nhuận.
Cách thức ứng tuyển
Ứng viên nộp hồ sơ trực tuyến bằng cách liên hệ:
Email: talent@codegym.vn
SĐT: 0978.121.792
Hạn nộp hồ sơ: 30/12/2023
Application deadline: December 30, 2023
SQL được chia thành nhiều nhóm lệnh khác nhau như:
Nhóm định nghĩa cấu trúc dữ liệu (DDL).
Nhóm lệnh thao tác dữ liệu (DML).
Nhóm lệnh phân quyền sử dụng dữ liệu (DCL).
Nhóm lệnh thao tác với transaction (TCL).
Bài hôm nay chúng ta sẽ cùng tìm hiểu về các câu lệnh ở DDL.
1. Vai trò của các câu lệnh DDL trong SQL
Với nhóm lệnh DDL sẽ ứng dụng cho việc xây dựng cấu trúc, định nghĩa dữ liệu ở DB. Và để dễ dàng thiết lập DB về sau.
[Database] DDL
2. Hướng dẫn sử dụng các câu lệnh thông dụng ở DDL
2.1. Câu lệnh CREATE
Thường sử dụng để tạo cấu trúc của table, về sau này có thể sử dụng cho khái niệm nâng cao như tạo VIEW, TRIGGER, STORED PROCEDURE, FUNCTION…
Cú pháp
CREATE TABLE table_name (
column1 datatype,
column2 datatype,
column3 datatype,
....
);
Ví dụ
CREATE DATABASE hospital_management;
USE hospital_management;
CREATE TABLE doctor (
doctor_id INT,
first_name VARCHAR(10),
middle_name VARCHAR(10)
);
Với ví dụ trên, mình đang sử dụng CREATE để lần lượt tạo DB là quản lý bệnh viện. Và sau đó tiếp tục sử dụng để tạo table doctor, với 3 column là doctor_id (mã bác sĩ), first_name (tên bác sĩ), middle_name (tên lót của bác sĩ).
2.2. Câu lệnh ALTER
Khi các bạn muốn cập nhật lại cấu trúc của table, thì hãy nghĩ ngay đến câu lệnh ALTER. Ngoài ra, với những khái niệm nào thường được sử dụng với CREATE, thì sẽ sử dụng được với ALTER.
Cú pháp
Thêm một cột
ALTER TABLE table_name
ADD column_name datatype;
Xoá một cột
ALTER TABLE table_name
DROP COLUMN column_name;
Đổi tên cột
ALTER TABLE table_name
RENAME COLUMN old_name to new_name;
Sửa đổi kiểu dữ liệu của cột
ALTER TABLE table_name
MODIFY COLUMN column_name datatype;
Ví dụ
Ở ví dụ về CREATE, mình đã tạo ra table là doctor. Nhưng đang thiếu trường last_name là họ của bác sĩ, vậy mình sẽ tiến hành cập nhật theo lệnh bên dưới:
ALTER TABLE doctor
ADD last_name VARCHAR(10);
2.3. Câu lệnh DROP
Với các table không được sử dụng nữa, thì cần thực hiện xoá đi với câu lệnh DROP, nó sẽ xoá toàn bộ cấu trúc và dữ liệu của table ra khỏi DB.
Cú pháp
DROP TABLE table_name;
Ngoài ra, nếu bạn chỉ muốn xoá dữ liệu thôi, thì có thể sử dụng:
TRUNCATE TABLE table_name;
Ví dụ
DROP TABLE doctor;
Kết luận
Tóm lại với các bộ lệnh ở DDL, thì thường được sử dụng cho các thao tác liên quan đến cấu trúc trong DB và cú pháp cũng không khó để sử dụng:
Tạo mới cấu trúc: CREATE
Chính sửa cấu trúc: ALTER
Xoá cấu trúc: DROP
Nguồn: codegym.vn/blog/2023/11/18/cac-cau-lenh-thong-dung-o-ddl/
Công nghệ thông tin gồm những môn nào? Làm gì? Nên học ở đâu?
Thời gian này, các bạn học sinh lớp 12 đang gấp rút chuẩn bị kiến thức cho kì thi sắp tới. Nhiều bạn đang quan tâm đến khối ngành công nghệ thông tin. Vì nhận thấy đây đang là ngành Hot và xu hướng phát triển chung. Tuy nhiên, không phải ai cũng hiểu hết về ngành này. Vậy công nghệ thông tin gồm những môn nào? Làm gì? Nên học ở đâu? Tất cả sẽ có trong bài viết này.
#codegym #hoclaptrinh #codingbootcamp #CNTT #laptrinhvien #daotaolaptrinh
codegym.vn/blog/2021/01/29/cong-nghe-thong-tin-gom-nhung-...
Cẩm nang từ A – Z về học lập trình cho người mới bắt đầu
Những người mới bắt đầu thường có xu hướng tìm hiểu xem nên chọn học ngôn ngữ gì. Tuy nhiên, đó lại là cách làm ngược. Thực tế, công nghiệp phần mềm không phải là một khối đơn nhất mà có nhiều mảng lĩnh vực nhỏ. Trước khi quyết định học một ngôn ngữ, bạn nên xác định mình muốn tham gia vào lĩnh vực nào. Cũng giống như đi câu cá, bạn nên khảo sát ao cá xem có cá không, có những loại cá nào. Sau đó, hãy đi mua loại cần câu và mồi câu thích hợp.
Xem thêm: codegym.vn/blog/2018/11/21/hoc-lap-trinh-cho-nguoi-moi-ba...
#codegym #hoclaptrinh #codingbootcamp #CNTT #laptrinhvien #daotaolaptrinh