Hôm nay, Hà Nội về đông lạnh quá ! Sáng đến công ty lúc 7h30, hành ông anh đôi trận PES, ăn sáng, rùi lóc cóc bật slack xem có task mới nào không ? Á đù “Hiện tại khách hàng chưa có task mới nhé, nên có thể làm việc khác”, ông PM nhắn tin. Ngồi không vừa buồn ngủ vừa lạnh, check telegram thì không gì mới, nghĩ đến cái blog “màng nhện giăng tơ…”, thui đành ngồi chia sẻ đôi chút cho anh em về ansible đêm qua nằm mơ học được.
Trong thời kỳ các dịch vụ cloud phát triển mạnh mẽ, việc xây dựng cơ sở dữ liệu cho phép chia sẽ dữ liệu giữa nhiều
ứng dụng khác nhau không có gì mới. Ví dụ như ứng dụng quản lý dân cư, quản lý trường học, bệnh viện,.. trong khu chung cư
dùng chung database chứa users
, người dùng trong users
điều có thể đăng nhập, truy cập vào các ứng dụng trên.
Hẳn hai khái niệm hard link
, symbolic link(soft link)
gây không ít khó khăn, nhiêu khê cho những người mới tìm hiểu về linux,
và với những cả những lão làng bẵng đi một thời gian đọc lại vẫn loạn cả lên. Chúng ta hãy cùng làm rõ 2 khái niệm trên,
so sánh ưu nhược điểm của 2 loại này.
Vào ngày 25/12/2018, phiên bản ruby 2.6.0 chính thức được phát hành, kèm theo đó là những tính năng mới được bổ sung và
cải tiền về hiệu suất. Một trình biên dịch mới JIT(Just-In-Time)
được ra đời, một module mới RubyVM::AbstractSyntaxTree
được đưa vào, hiệu suất được cải thiện 1.7 lần
so với Ruby 2.5. Chúng ta hãy cùng điểm qua một số tính năng mới đáng chú ý ở phiên bản Ruby 2.6.0
Phận làm dev như phận culi, chỉ đâu đánh đấy, nay code dự án này mai lại chuyển dự án khác, code đồng thời 1 lúc dăm ba dự án là chuyện xưa nay không hiếm gặp. Dự án thì khách hàng yêu cầu cái gì cũng phải mới nhất ruby-2.6.1, rails-6.0.0, mysql-8.0, dự án khác thì đã phát triển từ thời napoleon ruby-2.0.0, rails-4.0.0, mysql-5.5. Các dự án có môi trường dev muôn hình muôn vẻ mà công ty chỉ cấp cho một cái máy để dev cả nhiệm kỳ. Trời sinh trouble ắt sinh docker !!!
Đa phần các ứng dụng trong ngôn ngữ lập trình web nói chung và trong Rails nói riêng đều sử dụng ORM để ánh xạ các record dữ liệu trong quan hệ quản trị cơ sở dữ liệu sang kiểu đối tượng mà mã nguồn định nghĩa trong các Class. Việc này giúp truy xuất dữ liệu đơn giản hơn, nhưng cũng mang đến những “cạm bẫy” khi code chưa khéo và N+1 Query là một phần trong số đó.
Trước khi đến với Pessimistic Locking, hãy cùng nhìn lại database locking và optimistic locking được đề cập ở bài viết lần trước.
Khác với optimistic locking là kiểm tra lock_version
khi cập nhật dữ liệu, pessimistic locking sẽ khóa record ngay khi người dùng đầu tiên
truy cập vào dữ liệu đó, tất cả những người dùng khác sẽ bị loại cho đến khi tiến trình cập nhật của dữ liệu của người dùng lock đầu tiên
hoàn thành.
Database locking là một tính năng hữu ích trong cơ sở dữ liệu quan hệ, nhằm ngăn ngừa việc xung đột giữa các hành động thay đổi dữ liệu, đảm bảo tính toàn vẹn dữ liệu giữa thời gian đọc và thời gian sử dụng.