Tìm giải pháp cho CSDL lớn

  • Thread starter BiDIT
  • Ngày gửi
B

BiDIT

Trung cấp
16/5/09
87
1
8
Hanoi
Table access của mình hiện đang lên đến khoảng 34000 records và đang ngày càng tăng dần. Với việc chia sẻ Database cho khoảng 5 người dùng nữa thì việc xử lý (Update, thêm...) các records sẽ rất chậm. Mọi người có cách nào không? Mình đã từng nghĩ đến SQL server nhưng chưa tìm hiểu được nó? Không biết khi dùng nó thì có nhanh hơn không nhỉ?
 
Khóa học Quản trị dòng tiền
hai2hai

hai2hai

VNUNI Makes a difference
29/4/04
2,032
125
63
50
Hà nội
vnuni.net
Bạn cần phân biệt giữa 1 Hệ quản trị CSDL khác với File CSDL dữ liệu. Access là 1 file dữ liệu độc lập, muốn sử dụng qua mạng thì chỉ có cách share full thư mục (mà có thể bị shift del bất cứ lúc nào), còn Hệ quản trị CSDL có thể quản lý rất nhiều những file CSDL như vậy và ko có khái niệm share full thư mục. Vì thế người ta gọi Access là Desktop Database, còn những cái như MS SQL, MySQL, Oracle, DB2, Infomix,... là HỆ quản trị CSDL.

Về số lượng bản ghi, MS SQL (các phiên bản, trừ các bản miễn phí) có thể dùng cho hệ thống chứng minh thư toàn quốc. Nói như vậy là để bạn hiểu khả năng lưu trữ của MS SQL. Còn về tốc độ, cái đó thuộc về công nghệ lập trình rồi. Có người hiển thị 1 triệu bản ghi trong 10 giây, có người hiển thị 1tr bản ghi trong 1 giờ (thậm chí treo máy). Vì thế, các bạn cần tìm hiểu thêm nhiều về kỹ năng optimization trong lập trình với CSDL nhé.

Tuy nhiên, với 5 người dùng và chưa tới 100K records mà đã chậm thì do bạn lập trình ko ổn thôi. Access vẫn có thể chạy nhanh trong những trường hợp đó. (Lập trình Access default là chuyên dùng kiểu bound, đó là 1 lý do chạy chậm, ngoài ra, file data cần phải để riêng vì nếu để chung với chương trình thì đó cũng là lý do thư 2 chạy chậm, còn rất nhiều lý do khác nữa dẫn đến việc chạy chậm)

Regards,
 
Sửa lần cuối:
C

chihienphuco

Trung cấp
20/4/09
109
1
0
Bình Chánh
Huynh hai2hai cho hỏi thêm, khi chuyển toàn bộ CSDL access sang CSDL SQL server.

Thì tại file ứng dụng access gồm ( Query, Form, Report, Marco, Module ), có link Table được CSDL SQL server tựa như link Table từ CSDL access trước đây để sử dụng không?
 
hai2hai

hai2hai

VNUNI Makes a difference
29/4/04
2,032
125
63
50
Hà nội
vnuni.net
Có thể sử dụng chương trình viết trên ACCESS, CSDL là MS SQL. Thông qua Link tables.
 
C

chihienphuco

Trung cấp
20/4/09
109
1
0
Bình Chánh
Phiền huynh cho hỏi thêm câu nữa :004:

Phiên bản giữa file ứng dụng access và CSDL SQL server có cần giống nhau không, vì em muốn convert Access 2000 sang 2003 hoặc cao hơn nữa?
Vd: Phiên bản Access 2000 phải cài vào SQL server 2000.

Thanks!
 
hai2hai

hai2hai

VNUNI Makes a difference
29/4/04
2,032
125
63
50
Hà nội
vnuni.net
Không phân biệt version của Access. MS SQL khi đó chỉ là hệ QT CSDL thôi, trên đó bạn tạo CSDL cho PM, Convert dữ liệu từ Access sang bên đó, sau đó xóa bỏ các table trong file Access đi, rồi tạo attached tables hoặc link tables từ MS SQL. Việc chuyển đổi lên version mới là vấn đề của Access, ko liên quan gì tới MS SQL cả.

Tuy nhiên, như lúc nãy định nói nhưng vì dạo này wkt chậm quá nên khó sửa bài, là nếu bạn vẫn tận dụng Access thì mình e là chất lượng PM ko khá hơn bao nhiêu về tốc độ nếu ko thay đổi gì về cách lập trình (Chỉ hơn 1 cái là ko còn phải share full thư mục cho người khác truy cập nữa).

Khi làm như vậy, kiến trúc phần mềm của bạn đang là theo kiểu: Client/Server (chưa phải 3tiers)
 
B

BiDIT

Trung cấp
16/5/09
87
1
8
Hanoi
Bạn cần phân biệt giữa 1 Hệ quản trị CSDL khác với File CSDL dữ liệu. Access là 1 file dữ liệu độc lập, muốn sử dụng qua mạng thì chỉ có cách share full thư mục (mà có thể bị shift del bất cứ lúc nào), còn Hệ quản trị CSDL có thể quản lý rất nhiều những file CSDL như vậy và ko có khái niệm share full thư mục. Vì thế người ta gọi Access là Desktop Database, còn những cái như MS SQL, MySQL, Oracle, DB2, Infomix,... là HỆ quản trị CSDL.

Về số lượng bản ghi, MS SQL (các phiên bản, trừ các bản miễn phí) có thể dùng cho hệ thống chứng minh thư toàn quốc. Nói như vậy là để bạn hiểu khả năng lưu trữ của MS SQL. Còn về tốc độ, cái đó thuộc về công nghệ lập trình rồi. Có người hiển thị 1 triệu bản ghi trong 10 giây, có người hiển thị 1tr bản ghi trong 1 giờ (thậm chí treo máy). Vì thế, các bạn cần tìm hiểu nhiều khi sử lập trình với CSDL nhé.

Tuy nhiên, với 5 người dùng và chưa tới 100K records mà đã chậm thì do bạn lập trình ko ổn thôi. Access vẫn có thể chạy nhanh trong những trường hợp đó. (Lập trình Access default là chuyên dùng kiểu bound, đó là 1 lý do chạy chậm, ngoài ra, file data cần phải để riêng vì nếu để chung với chương trình thì đó cũng là lý do thư 2 chạy chậm, còn rất nhiều lý do khác nữa dẫn đến việc chạy chậm)

Regards,

Cám ơn bác 222 nhiều. Có lẽ em sẽ xem lại phần lập trình của mình. Tiện đây các bác nào có link các bài viết về vấn đề lập trình trong access ảnh hưởng đến tốc độ của phần mền thì chỉ cho em với nhé.
 
C

chihienphuco

Trung cấp
20/4/09
109
1
0
Bình Chánh
Cám ơn bác 222 nhiều. Có lẽ em sẽ xem lại phần lập trình của mình. Tiện đây các bác nào có link các bài viết về vấn đề lập trình trong access ảnh hưởng đến tốc độ của phần mền thì chỉ cho em với nhé.

Mình chia sẻ chút kinh nghiệm: "làm khoảng 5 phần mềm trở lên là ngộ ra" :wall:

1. Các field thiết kế kích cở cố gắng cho gần bằng dữ liệu thực nhập. "lúc đầu thôi, vì thiết kế xong mà sửa nó la ầm ầm"
2. Tối ưu hoá các câu lệnh. "cái này có thời gian đầu tư và năng khiếu bẩm sinh" chịu thôi mình lập trình kiểu nông dân chạy được là mừng roài :004:
3. Chuyển các ứng dụng sang .MDE chạy rất trơn tru
4. Chuyển CSDL qua SQL để ổn định, bảo mật tốt hơn và chạy nhanh hơn 1 chút "mới nghe lão hai2hai mách"
5. Sắm PC mạnh, hoặc chơi luôn server càng tốt. Cái này thì "Dù tay nghề bạn không cao nhưng nó chạy ào ào" :004:
6. PC chỉ hoạt động cực khủng ở nhiệt độ thấp, bỏ nó vào phòng máy lạnh là khỏi lo sự cố.

Còn muốn nhanh nữa chắc phải dẫn lão hai2hai đi nhậu, lót tay nhờ chỉ giáo, hoặc tút luôn phần mềm trực tiếp. :dance2:
 
Đ

ĐỖ SƠN HẢI

Guest
10/10/06
130
0
0
45
Phan Thiết
Bác 222 nói đúng đấy mình nghỉ chihienphuco nên tìm hiểu MS SQL. Co lẻ nên nhờ bác 222 tư vấn giúp nên bắc đầu như thế nào? rồi trả phí bác ấy vậy mà !

Thực ra nếu sử dụng access để khai thác dữ liệu phục vụ cho công tác kiểm soát là được rồi.

Mình đang sử dụng access để quản lý khu resort 4 sao bây giờ nghỉ lại quả thật là liều vì một năm mình phải xử lý 80.000 dòng dữ liệu thô, khi xem BIDIT đề cầp mình thấy vẩn còn sợ đấy .
 
B

BiDIT

Trung cấp
16/5/09
87
1
8
Hanoi
Bác 222 nói đúng đấy mình nghỉ chihienphuco nên tìm hiểu MS SQL. Co lẻ nên nhờ bác 222 tư vấn giúp nên bắc đầu như thế nào? rồi trả phí bác ấy vậy mà !

Thực ra nếu sử dụng access để khai thác dữ liệu phục vụ cho công tác kiểm soát là được rồi.

Mình đang sử dụng access để quản lý khu resort 4 sao bây giờ nghỉ lại quả thật là liều vì một năm mình phải xử lý 80.000 dòng dữ liệu thô, khi xem BIDIT đề cầp mình thấy vẩn còn sợ đấy .

Xem ra chủ đề này thú vị đây. Bác 222 giúp bọn em nhé.
 
hai2hai

hai2hai

VNUNI Makes a difference
29/4/04
2,032
125
63
50
Hà nội
vnuni.net
1. Chú ý tới cách thiết kế CSDL phải tối ưu theo chuẩn 3n
2. Không dùng Mã (Code) có kiểu Text, Varchar làm trường khóa. Thay vì thế, hãy dùng ID (PK) có kiểu Long, Code là UniqueIndex kiểu Text, Varchar (Tùy loại CSDL)
3. Tối ưu hóa SQL (Google: SQL Optimization)
4. Chuyển từ Access lên VB6 hoặc .NET (Vì lâu lắm rồi mình ko viết trên Access nữa nên ko giúp được các bạn được :))
5. Bỏ hẳn cách viết BoundData, không dùng Data Control bound với Grid chuẩn của VB, của Access
6. Hãy dùng Disconntected Dataset (Recordset) hầu như mọi trường hợp (như thế sẽ làm giảm connections vào CSDL ở mọi thời điểm)
7. Không dùng các Grid chuẩn của Microsoft (Vì M$ còn phải đi dùng của các cty khác). Hãy chọn lấy 1 một Grid đủ mạnh để hiển thị dữ liệu. Bỏ hẳn khái niệm AddItem trong code (Trừ khi chắc chắn dữ liệu là rất ít)
8. Hãy viết theo kiến trúc 3 lớp (Google: 3-tiers architecture) hoặc đọc giới thiệu trên vnuni forum

Sơ bộ vài điều như thế. Còn nếu kỹ hơn, hãy tới gặp mình vào các chiều thứ 7 nhé. Thông tin liên hệ có đầy trên mạng.
 
hai2hai

hai2hai

VNUNI Makes a difference
29/4/04
2,032
125
63
50
Hà nội
vnuni.net
MS SQL thì khi cài đặt thì bản Free là MSDE, MS SQL 2005 Express cũng đã là hơi lớn.

Nếu chúng ta làm phần mềm mà muốn có bộ cài đặt nhỏ (nhất là đối với các phần mềm đóng gói chuyên nghiệp) thì nên mua VistaDB (Hiện nay họ chỉ hỗ trợ nâng cấp bản cho .NET, engine của VistaDB là cực bé (XCopy our 1 MB .net assembly and your single VDB3 database file to your customers) nhưng hiệu quả vô cùng lớn ko thua kém gì MS SQL).

Bên cạnh VistaDB cũng còn có nhiều hệ quản trị CSDL khác nữa:

- Advantage Database Server cũng là 1 sự lựa chọn tốt.

- MySQL is free, cross-platform, performs ok, has over 6 million installations already, has drivers for .NET, perl, php, Delphi, most-things etc. If you can't think of a good reason not to use this, then use it.

- SQLite: In the case of SQLite, what is the point of defining datatypes for the fields if they are not inforced. No support for stored-procedures. Meaning little data integrity and no scalability.

- FireBird (Free & better than commercial ones)

- v.v...

Nói tóm lại, mỗi hệ quản trị CSDL có điểm mạnh, điểm yếu riêng... disk-space, footprint, speed, price, platform restrictions, availability of tools, DBA requirements etc. Cái nào phù hợp nhất với bạn là tùy vào nhu cầu của bạn
 
Sửa lần cuối:
Đ

ĐỖ SƠN HẢI

Guest
10/10/06
130
0
0
45
Phan Thiết
Cảm ơn bác 2hai2

Nếu mình may mắn ở Ha Noi thì hẳn sẻ mời Bác uống cafe .

Bác đã giúp bọn mình nhiều rồi, muốn biết thì phải rõ mới dùng được chứ tin học mà mơ hồ thì ngủ cũng không yên.

Bây giờ cái bọn mình cần là chuyển dữ liệu từ access sang MS SQL dân quê nên nghỉ sao làm vậy như sau :

Tren may chu

Mua một cái đĩa cài MS SQL
Chuyển dữ liệu từ access sang MS SQL

Các máy kế toán

Quyen truy cap

Sử dụng file access nếu có quyền truy cập thì update dữ liệu từ máy chủ về máy con sau đó sử dụng

Quyen cap nhat

Sử dụng file access cập nhật trực tiếp vào server

Do trinh do cua minh chi den do nen bac 222 co the giup minh

Huong dan thuc hien
chuong trinh cai dat

Chuyen thu lao huong dan minh chuyen khoan cho bac thoi, minh cung da tung dat mua sach luat o ha noi vay.

Chuyen gia ca thi tính sao dan que nghe vay he he.

Hậu mãi neu bac o TPHCM thi minh dong goi Hải Sản gửi bác cuối tuần nhậu.
 
hai2hai

hai2hai

VNUNI Makes a difference
29/4/04
2,032
125
63
50
Hà nội
vnuni.net
1. Mua bản quyền MS SQL Server 2000 hoặc 2005 (Standard, Professional, Enterprise, Developer Eddition)
Nếu ko dùng phiên bản lớn thì có thể sử dụng bản Free của M$ (nhưng mà ko có màn hình quản lý CSDL nên mọi việc cần phải làm manual hoặc kiếm các phần mềm Manager nhỏ để quản lý). Đối với MS SQL 2000 thì bản Free là MSDE, còn với MS SQL 2005/2008 thì bản Free là Express Eddition.

P/S: Mục này hai2hai ko dám nhắc tới việc mọi người đi mua đĩa CD lậu ngoài thị trường nên mình chỉ viết như ở trên

2. Cài đặt MS SQL. Tùy theo mỗi loại eddition có phí hay miễn phí nói trên mà có cách cài đặt khác nhau. Chú ý: MS SQL có 2 chế độ cài: Windows NT Authenticate hoặc Mixed Mode. Mọi người nên chọn chế độ Mixed Mode trong quá trình cài đặt

3. Tạo 1 CSDL trên hệ quản trị CSDL MS SQL
Đối với các bản lớn, có thể dùng Enterprise Manager để tạo CSLD. Còn nếu dùng MSDE hay Express Eddition thì có thể dùng các công cụ Manager miễn phí hoặc tạo bằng lệnh. Tốt nhất nên tạo account truy cập riêng cho CSDL của mình và ko dùng tới "sa" account (System Account)

4. Kiếm 1 công cụ Convert Dữ liệu từ Access sang MS SQL (Cả cấu trúc tables lẫn dữ liệu)

5. Tạo links tables từ file Access tới các bảng có trong CSDL trên MS SQL đã tạo. Nhưng mà... tốt nhất là nên dùng ADO connect vào CSDL thì tốt hơn. Những thứ này ko viết lách cách thế này được mà phải tìm kiếm trên mạng và học hỏi thôi.

Tạm thế đã nhé

Còn chuyện tiền nong thì dẹp thôi, có tình cảm như thế là đáng quý lắm rồi.
 
C

chihienphuco

Trung cấp
20/4/09
109
1
0
Bình Chánh
Sưu tầm từ link: http://my.opera.com/vietnam-it/blog/chuyen-doi-du-lieu-tu-access-sang-sql
Chuyển đổi dữ liệu từ Access sang SQL

Hiện nay Access vẫn được sử dụng đối với các phần mềm với lương thông tin nhỏ. Tuy nhiên ở một số trường hợp vì sự bảo mật và quản trị dữ liệu access là ko cao thế nên người ta chuyển sang quản lý bằng công cụ SQL Server. Bài viết này tôi xin hướng dẫn cách chuyển dữ liệu từ Access sang SQL.

1. Download phần mềm acc2mssd.exe tại đây http://files.myopera.com/vietnam-it/Zips/AccessToSql.rar và thực hiện cài đặt theo các bước từ bước 2 dưới đây.

2. Ở bước đầu tiên trong việc cài đặt - bạn nhập vào tên Sql Server, username và pass. Xem hình bên dưới:
Step1.bmp

3. Ở bước hai - màn hình yêu cầu chọn workgroup, username và password.
Step2.bmp

Bạn có thể bỏ qua phần này bằng cách nhấn next.

4. Bước thứ 3 bạn Browser tới file Access mà bạn cần convert. Đồng thời bạn nhập tên DataBase vào ô bên dưới - Chương trình sẽ lấy tên này để tạo Database trong SQL.
Step3.bmp

5. Chọn những bảng dữ liệu nào bạn muốn convert. Bằng cách nhấn vào Add hoặc Add all.
Step4.bmp

Đợi nó process xong và finish. Mở SQL Server lên, bạn sẽ thấy dữ liệu đã được chuyển
 
C

chihienphuco

Trung cấp
20/4/09
109
1
0
Bình Chánh
Chào anh hai2hai, cám ơn đã tiết lộ chút thủ thuật chuyển access qua SQL server!

Em xin hỏi thêm vấn đề này:
Anh vui lòng chỉ cách để từ file MDB link Table đến SQL server 2000 để sử dụng.
Và phân quyền cho user bằng cách nào? User gồm BANHANG01, BANHANG02, CNKHACH, THUCHI, TONGHOP,...

Rất mong anh giúp đở!
 
Sửa lần cuối:
hai2hai

hai2hai

VNUNI Makes a difference
29/4/04
2,032
125
63
50
Hà nội
vnuni.net
Và phân quyền cho user bằng cách nào? User gồm BANHANG01, BANHANG02, CNKHACH, THUCHI, TONGHOP,...
Ô, bạn cần phải phân biệt các mức bảo mật.

- Mức bảo mật HĐH & Mạng
- Mức bảo mật CSDL
- Mức bảo mật Ứng dụng

Bạn đang nói tới là mức bảo mật Ứng dụng, còn ở bài trên tớ nói tới là mức bảo mật ở CSDL (Giống như trong Access bạn đặt mật khẩu cho admin trong system.* ấy)

cách để từ file MDB link Table đến SQL server 2000 để sử dụng.

1. Tạo ODBC Source
2. Mở Link Dialogbox bằng cách chọn Link Table từ chuột phải trên Table Tab
3. Chọn File Type là ODBC Databases
4. Chọn tới ODBC Source đã làm ở bước 1
v.v....

Mình nghĩ mọi người đã làm được rồi...
 
Đ

ĐỖ SƠN HẢI

Guest
10/10/06
130
0
0
45
Phan Thiết
Cảm ơn bac hai2hai nhiều lắm đấy.
Bây giờ thì mình biết bắt đầu tìm hiểu từ đâu, nếu bí thì mong các bác giúp.
 
Đ

ĐỖ SƠN HẢI

Guest
10/10/06
130
0
0
45
Phan Thiết
Gửi bác hai2hai

Mình mua một đĩa SQL 2000 sau đó cài vào và chuyển table sang, không đơn giản để tự học được SQL mình mới làm mổi việc như trên thôi đã mất khá nhiều thời gian .

Mình có thể nhập liệu từ form access rồi dữ liệu nó chuyển ngay vào SQL được không bác ?

Nhờ goi y cua bac dung internet biết được công đoạn chuyển du lieu sang access *.adp do không phải mdb? nên buộc phải link sang file mdb nên cũng tạm sử dụng được.

Bác có thể chỉ giúp mình sử dụng công cụ gì để nhập liệu trong SQL, trong SQL 2000 có form nhập liệu ?

Mong các bác chỉ giúp !!
 
C

chihienphuco

Trung cấp
20/4/09
109
1
0
Bình Chánh
Cần thiết nhất: Với sức chứa tối đa 2Gb của CSDL access thì doanh nghiệp vừa và nhỏ hoạt động >15năm là dư sức. Lúc này có thể phát hiện nhiều thứ mới hơn, có khi access sẻ nâng lên sức chứa, độ ổn định, bảo mật,... thì sao. Ổ cứng nó rẻ như thế lý do gì Microsoft lại tiếc kiệm cái không gian nhỉ?
Chân thành khuyên mọi người hãy tự tin triển khai dạng này vì nó phù hợp với điều kiện, kiến thức, và dễ dàng nắm giữ trong tầm tay :004:

Mục tiêu: Về SQL+access cá nhân cảm thấy là một đỉnh cao cần hướng tới và cần sự đầu tư chính quy hơn, với sự khẳng định thế mạnh về dung lượng vô hạn, bảo mật, an toàn,...

Không đọc lý thuyết và thực hành bài bản thì khó tiến hành khai thác thế mạnh của nó vả lại cũng không mấy tự tin "không chắc ăn cái mình viết" thiếu kiến thức trầm trọng về SQL server, thiếu một người thầy tin cậy "không ai có thể hổ trợ mình từ a -> z để làm nhiều lý do", rồi kèm thêm mớ kiến thức về mạng,... mà chưa tham gia một khoá học cơ bản nào thì rất mù mờ.

Hi vọng sẻ có nhiều thời gian hơn theo đuổi vụ này.
 

Xem nhiều

Webketoan Zalo OA