09/10/2018, 23:47

V/v sử dụng SDO trong PHP

Có bạn nào đã từng ứng dụng SDO trong PHP chưa?.
Mình từng ứng dụng chạy tốt trên PHP 5 và MySQL (được sử dụng cho dự án Yobanbe).
Tuy nhiên, hiện tại mình đang gặp phải rắc rối về Transaction khi sử dụng với MSSql . . .
Thư viện của SDO thông báo là driver không hỗ trợ Transaction. Bạn nào đã từng dùng và khắc phục được vấn đề trên thì giúp mình với . . .
Thanks
jiSh@n viết 01:52 ngày 10/10/2018
SDO cơ mà. Service Data Objects
http://www.php.net/sdo
pigeeken viết 01:59 ngày 10/10/2018
Đúng, SDO tương tác với CSDL thông qua PDO. Trong tài liệu SDO nó có yêu cầu (Requirements) là dùng MySQL hay DB2 . . . không thấy đề cập đến MSSQL
Đúng là SDO tốn tài nguyên, chạy chậm thiệt.
À ! Mình chỉ viết thư viện để sử dụng SDO, giảm bới phức tạp lúc dùng SDO (còn dùng vào việc gì thì tùy developer) . . . rất tiện lợi cho việc select dữ liệu --> sửa đổi --> rồi apply lại DB (hay thêm mới dữ liệu vào db) . . . Nếu chỉ select và show lên thì kg nên dùng SDO . . .
pigeeken viết 01:49 ngày 10/10/2018
Quote Được gửi bởi jiSh@n View Post
SDO cơ mà. Service Data Objects
http://www.php.net/sdo
jiSh@n biết SDO chắc có dùng qua, có thể cho mình chút kinh nghiệm không?.
Thanks
mr47 viết 01:51 ngày 10/10/2018
Tôi nghĩ SDO không phải là một lựa chọn tốt cho các dự án web.

Dự án YBB, theo chỉ đạo của software manager của VinaGame, đã lạm dụng SDO một cách kinh dị. Kết quả là hệ thống của YBB ngốn resoure một cách không thể tưởng tượng nổi. +_+

Bạn chịu khó đọc code của SDO, phần PHP ấy. Cứ mỗi record được lâý ra từ Database, nó lại làm 2 cái loop.

Vấn đề là, bạn tự hỏi bản thân mình đi, có cần thiết phải biến database result thành các object hay không ?

Trong ứng dụng hiện đại, ngươì ta sử dụng ORM (active record, data mapper...) là để separated domain logic khỏi application logic. Nói nôm na hơn, ngươì ta ko khuyến khích viết code SQL vào trong mã ứng dụng.

SDO không làm được điều đó ! Bạn vẫn phải viết SQL, vậy bạn nghĩ xem, việc map các result thành các object còn ý nghĩa gì nữa ?

Hãy nghĩ đến các thư viện như doctrine thay cho SDO.
pigeeken viết 02:01 ngày 10/10/2018
Quote Được gửi bởi mr47 View Post
Tôi nghĩ SDO không phải là một lựa chọn tốt cho các dự án web.

Dự án YBB, theo chỉ đạo của software manager của VinaGame, đã lạm dụng SDO một cách kinh dị. Kết quả là hệ thống của YBB ngốn resoure một cách không thể tưởng tượng nổi. +_+

Bạn chịu khó đọc code của SDO, phần PHP ấy. Cứ mỗi record được lâý ra từ Database, nó lại làm 2 cái loop.

Vấn đề là, bạn tự hỏi bản thân mình đi, có cần thiết phải biến database result thành các object hay không ?

Trong ứng dụng hiện đại, ngươì ta sử dụng ORM (active record, data mapper...) là để separated domain logic khỏi application logic. Nói nôm na hơn, ngươì ta ko khuyến khích viết code SQL vào trong mã ứng dụng.

SDO không làm được điều đó ! Bạn vẫn phải viết SQL, vậy bạn nghĩ xem, việc map các result thành các object còn ý nghĩa gì nữa ?

Hãy nghĩ đến các thư viện như doctrine thay cho SDO.
^^ mình làm nhưng quả thật cũng kg muốn dùng SDO (và các dự án cá nhân hoàn toàn kg). Nhưng đó là suy nghĩ của mình, còn về phía cv và yêu cầu buộc phải đưa vào (Bạn cũng biết là "theo chỉ đạo của software manager" mà) . . . thì phải làm thui . . . sắp đến deadline goài ~.~
Quote Được gửi bởi mr47 View Post
Vấn đề là, bạn tự hỏi bản thân mình đi, có cần thiết phải biến database result thành các object hay không ?
Bản thân mình có hay không thì . . . không giải quyết được vấn đề. Làm theo . . . yêu cầu cấp trên mùh

Quote Được gửi bởi mr47 View Post
lạm dụng SDO một cách kinh dị
Cái này thì không pít lun . . . viết là 1 chuyện, trường hợp nào nên và kg nên dùng thì là chuyện khác, mình kg can thiệp được. Lạm dụng wé thì . . . đúng như bạn nói "ngốn resoure"

Đã thuyết phụ bõ SDO roài mà kg được, chắc nhân dịp này . . . viện cỡ tẩy chay nó lun wé
jiSh@n viết 01:51 ngày 10/10/2018
Quote Được gửi bởi pigeeken View Post
jiSh@n biết SDO chắc có dùng qua, có thể cho mình chút kinh nghiệm không?.
Thanks
Biết thôi chứ ko có dùng Lúc đấy nó vẫn còn là experimental extension nên ko quan tâm cho lắm. Mặc dù tài liệu chỉ đề cập tới MySQL với DB2 nhưng theo như cái ex thì chắc cũng làm được với MSSQL. Cứ tạo 1 object PDO connect đến MSSQL rồi dùng Relational DAS với object đó thôi. Để thực hiện được transaction thì PDO driver phải hỗ trợ. Theo 1 số tài liệu thì driver MSSQL dành cho PDO ko hỗ trợ transaction (PDO_DBLIB), và khuyên nên dùng PDO_ODBC để thay thế. Mình cũng chỉ biết đến thế, bro thử xem sao.
pigeeken viết 01:56 ngày 10/10/2018
Quote Được gửi bởi jiSh@n View Post
Biết thôi chứ ko có dùng Lúc đấy nó vẫn còn là experimental extension nên ko quan tâm cho lắm. Mặc dù tài liệu chỉ đề cập tới MySQL với DB2 nhưng theo như cái ex thì chắc cũng làm được với MSSQL. Cứ tạo 1 object PDO connect đến MSSQL rồi dùng Relational DAS với object đó thôi. Để thực hiện được transaction thì PDO driver phải hỗ trợ. Theo 1 số tài liệu thì driver MSSQL dành cho PDO ko hỗ trợ transaction (PDO_DBLIB), và khuyên nên dùng PDO_ODBC để thay thế. Mình cũng chỉ biết đến thế, bro thử xem sao.
Ok, thanks jiSh@n . . . để mình xem lại
Bài liên quan
0