[Database-Oracle] Đối với cơ sở dữ liệu cực lớn thì dùng gì để truy xuất dữ liệu nhanh nhất? - vozForums
vozForums

Go Back   vozForums > Máy tính để bàn > Phần mềm > Phát triển Phần mềm


Reply
 
Thread Tools
  #1  
Old 11-01-2017, 20:43
thieugiatri4492 thieugiatri4492 is offline
Senior Member
 
Join Date: 08-2012
Posts: 433
Arrow [Database-Oracle] Đối với cơ sở dữ liệu cực lớn thì dùng gì để truy xuất dữ liệu nhanh nhất?

Cho mình hỏi là ở các công ty outsource thì thường sử dụng biện pháp gì để truy xuất cơ sở dữ liệu cực lớn? Ví dụ truy xuất dữ liệu khách hàng gồm cả triệu dòng rồi hiển thị lên trang web. Hiện tại trong công ty mình chuyên về .NET, hay sử dụng stored procedure rồi dùng ADO.NET để gọi stored procedure đó,dùng class Oracle Data Adapter fill các dữ liệu vào dataset rồi hiện lên trang web. Ngoài ra còn cách nào không? Mình thấy nhiều cách như dùng Linq để select dữ liệu thì cách dùng Linq có tối ưu hơn cách gọi Stored procedure để select dữ liệu không?

Mong các bạn giải đáp giúp, mình cám ơn
Reply With Quote
  #2  
Old 11-01-2017, 21:39
vinhomn vinhomn is offline
Đã tốn tiền
 
Join Date: 10-2008
Location: 50cm trước màn hình.
Posts: 1,086
Re: [Database-Oracle] Đối với cơ sở dữ liệu cực lớn thì dùng gì để truy xuất dữ liệu nhanh nhất?

hiển thị hàng triệu dòng trên 1 webpage
cùng lắm hiển thị 1000 dòng là quá lắm rồi , thế filter với phân trang để làm gì?
Reply With Quote
  #3  
Old 11-01-2017, 22:19
thieugiatri4492 thieugiatri4492 is offline
Senior Member
 
Join Date: 08-2012
Posts: 433
Re: [Database-Oracle] Đối với cơ sở dữ liệu cực lớn thì dùng gì để truy xuất dữ liệu nhanh nhất?

Quote:
Originally Posted by vinhomn View Post
hiển thị hàng triệu dòng trên 1 webpage
cùng lắm hiển thị 1000 dòng là quá lắm rồi , thế filter với phân trang để làm gì?
Ý mình là lúc lấy dữ liệu chứ không phải hiển thị, bạn hiểu sai ý mình rồi, lúc thực hiện việc lấy dữ liệu ấy. Ví dụ như execute stored procedure rồi lấy dữ liệu trả về, fill nó vào dataset ấy
Reply With Quote
  #4  
Old 11-01-2017, 22:37
09 16 09 16 is online now
Senior Member
 
Join Date: 09-2016
Posts: 702
Re: [Database-Oracle] Đối với cơ sở dữ liệu cực lớn thì dùng gì để truy xuất dữ liệu nhanh nhất?

Quote:
Originally Posted by thieugiatri4492 View Post
Ý mình là lúc lấy dữ liệu chứ không phải hiển thị, bạn hiểu sai ý mình rồi, lúc thực hiện việc lấy dữ liệu ấy. Ví dụ như execute stored procedure rồi lấy dữ liệu trả về, fill nó vào dataset ấy
big data thì cache rồi hiển thị lên chứ đòi query xuống db mà show lên cho nhanh à
Reply With Quote
  #5  
Old 11-01-2017, 22:42
thieugiatri4492 thieugiatri4492 is offline
Senior Member
 
Join Date: 08-2012
Posts: 433
Re: [Database-Oracle] Đối với cơ sở dữ liệu cực lớn thì dùng gì để truy xuất dữ liệu nhanh nhất?

Quote:
Originally Posted by 09 16 View Post
big data thì cache rồi hiển thị lên chứ đòi query xuống db mà show lên cho nhanh à
Ờ thì tại mình hay gọi store procedure, dữ liệu trả về thì fill vào data table rồi show lên, còn cache rồi hiển thị như bạn nói là sao? Giải thích giùm mình được không?
Reply With Quote
  #6  
Old 11-01-2017, 22:51
09 16 09 16 is online now
Senior Member
 
Join Date: 09-2016
Posts: 702
Re: [Database-Oracle] Đối với cơ sở dữ liệu cực lớn thì dùng gì để truy xuất dữ liệu nhanh nhất?

Quote:
Originally Posted by thieugiatri4492 View Post
Ờ thì tại mình hay gọi store procedure, dữ liệu trả về thì fill vào data table rồi show lên, còn cache rồi hiển thị như bạn nói là sao? Giải thích giùm mình được không?
mỗi report thường sẽ có một số giá trị được thường xuyên sử dụng, ví dụ tình hình kinh doanh trong tuầng là được xem nhiều nhất, rồi mới đến tình hình trong tháng, trong năm... bác dựa vào đó để trích xuất ra table cache để query nhanh hơn. Sang hơn nữa thì làm nguyên con server chỉ để cache kết quả query lên RAM...
Reply With Quote
  #7  
Old 12-01-2017, 00:01
thieugiatri4492 thieugiatri4492 is offline
Senior Member
 
Join Date: 08-2012
Posts: 433
Re: [Database-Oracle] Đối với cơ sở dữ liệu cực lớn thì dùng gì để truy xuất dữ liệu nhanh nhất?

Quote:
Originally Posted by 09 16 View Post
mỗi report thường sẽ có một số giá trị được thường xuyên sử dụng, ví dụ tình hình kinh doanh trong tuầng là được xem nhiều nhất, rồi mới đến tình hình trong tháng, trong năm... bác dựa vào đó để trích xuất ra table cache để query nhanh hơn. Sang hơn nữa thì làm nguyên con server chỉ để cache kết quả query lên RAM...
Nếu vậy thì không được rồi, tại của mình chỉ lấy theo tháng, mỗi tháng lấy dữ liệu 1 lần, và dữ liệu thì nó thay đổi hằng ngày, cho nên giá trị thường xuyên sử dụng gần như là không có vì dữ liệu luông được đồng bộ và làm mới hằng ngày. Với lại vấn đề của mình là trong quá trình gọi stored trong code c# thì nhiều khi rất là lâu, cho nên không biết là có cách nào để giải quyết vấn đền này không
Reply With Quote
  #8  
Old 12-01-2017, 00:36
vinhomn vinhomn is offline
Đã tốn tiền
 
Join Date: 10-2008
Location: 50cm trước màn hình.
Posts: 1,086
Re: [Database-Oracle] Đối với cơ sở dữ liệu cực lớn thì dùng gì để truy xuất dữ liệu nhanh nhất?

Mình thấy bạn mô tả quá chung chung.
Đầu tiên cho mình hỏi, cái procedure của bạn trả ra data thế nào? trả ra nguyên 1 cục tất cả data hay có phân trang?
Thứ 2 nữa, theo kn của mình với c# thì để mapping sql data không thằng nào nhanh hơn ado cả, vì nó là tầng giao tiếp khá thấp rồi, và vấn đề rất có thể ở cái data đầu vào mà thằng dataprovider nó nhận được từ procedure. Data trả ra từ procedure quá lớn hoàn toàn có thể làm treo dataprovider.
Thứ 3, bạn bảo bạn dùng adapter để fill sql data vào dataset, mà cả 2 thằng adapter và dataset đều cache lại trên ram hết!!!
Reply With Quote
  #9  
Old 12-01-2017, 00:43
rexviet rexviet is offline
Đã tốn tiền
 
Join Date: 08-2011
Location: C:\WINDOWS\System32\
Posts: 1,303
Send a message via Yahoo to rexviet Send a message via Skype™ to rexviet
Re: [Database-Oracle] Đối với cơ sở dữ liệu cực lớn thì dùng gì để truy xuất dữ liệu nhanh nhất?

Dùng Linq mới chậm hơn bình thường đó
Công ty mình thì dùng Solr Search Engine để truy vấn cho nhanh.
Reply With Quote
  #10  
Old 12-01-2017, 08:21
thieugiatri4492 thieugiatri4492 is offline
Senior Member
 
Join Date: 08-2012
Posts: 433
Re: [Database-Oracle] Đối với cơ sở dữ liệu cực lớn thì dùng gì để truy xuất dữ liệu nhanh nhất?

Quote:
Originally Posted by vinhomn View Post
Mình thấy bạn mô tả quá chung chung.
Đầu tiên cho mình hỏi, cái procedure của bạn trả ra data thế nào? trả ra nguyên 1 cục tất cả data hay có phân trang?
Thứ 2 nữa, theo kn của mình với c# thì để mapping sql data không thằng nào nhanh hơn ado cả, vì nó là tầng giao tiếp khá thấp rồi, và vấn đề rất có thể ở cái data đầu vào mà thằng dataprovider nó nhận được từ procedure. Data trả ra từ procedure quá lớn hoàn toàn có thể làm treo dataprovider.
Thứ 3, bạn bảo bạn dùng adapter để fill sql data vào dataset, mà cả 2 thằng adapter và dataset đều cache lại trên ram hết!!!
Cụ thể là vậy, thông thường mình sẽ gọi cái stored procedure trong code, cái stored đó trả về cursor là 1 bảng dữ liệu, mình dùng dữ liệu đó fill vào dataset trong c#, không có phân trang gì hết. Vấn đề là mình không biết đó có phải là cách đúng khi xử lý 1 lượng lớn dữ liệu trả về từ stored procedure không?

Ví dụ code như vầy:
Code:
OracleCommand cmd = new OracleCommand("PKG.XX");--Tên Stored
Cái này dùng để gọi stored procedure, sau đó mình dùng
Code:
OracleDataAdapter da = new OracleDataAdapter(cmd);
          Dataset ds = new Dataset();
          da.fill(ds);
Vấn đề ở đây là ở cái dòng in đậm, mình thấy nó trả về kết quả quá lâu đối với dữ liệu cỡ 100 ngàn dòng. Cho nên mình không biết đây có phải là cách đúng để lấy dữ liệu trả về từ Stored Procedure trong Oracle không? Ở đây cụ thể là ASP.NET
Reply With Quote
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump





All times are GMT +7. The time now is 07:36.


Steam Powered by vBulletin® 0.1 pre-alpha
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.