30/09/2018, 18:10

Xây dựng Database và cung cấp API cho điện thoại như thế nào cho hiệu quả?

Hi mọi người, Đạt có ý tưởng muốn xây dựng một dạng database online, cho phép điện thoại truy cập vào để lấy thông tin.

Câu hỏi này bắt nguồn từ topic: Liệu bạn có muốn sử dụng một công cụ tư vấn tài chính trước khi gặp tư vấn viên?

Ví dụ như Đạt muốn viết một con bot chạy đi lấy thông tin từ nhiều nguồn khác nhau cho các thông tin như lãi suất vay, lãi suất tiết kiệm, và các thông tin khác rồi lưu lại ở server X.

Một phone client (WP, Android, iOS) muốn có thông tin thì gọi tới server thông qua API cho sẵn, ví dụ như muốn biết với số tiền 2tr mỗi tháng, đóng trong 10 năm thì gửi ở ngân hàng nào thì hiệu quả. Server sẽ tìm trong database và trả ra kết quả này.

Giả sử dữ liệu sẽ tăng lên theo thời gian, số lượng người dùng cũng lớn. Vậy thì Đạt nên xây dựng Database như thế nào, chọn server như thế nào?

Cảm ơn mọi người.

Khiem Nguyen viết 20:15 ngày 30/09/2018

@ltd thử sử dụng dịch vụ azure http://azure.microsoft.com

Itachi Citus viết 20:18 ngày 30/09/2018

Database em nghĩ không tăng nhiều đâu anh, số lượng ngân hàng giờ đang giảm và sát nhập.
Còn dữ liệu cá nhân người dùng thì em chưa rõ anh muốn lưu gì lắm , vì theo như cái cách sử dụng anh mô tả nó giống như là một công cụ sử dụng nhanh hơn là cần thiết phải yêu cầu đăng nhập.

Le Hoai viết 20:16 ngày 30/09/2018

Giả sử dữ liệu sẽ tăng lên theo thời gian, số lượng người dùng cũng lớn. Vậy thì Đạt nên xây dựng Database như thế nào, chọn server như thế nào?

NoSql là lựa chọn đúng đắn ở thời điểm hiện tại. Tuy nhiên cách lưu trữ dữ liệu thì còn tùy, thông tin mà @ltd muốn lưu là gì. Như trong VD ở trên thì hoàn toàn chỉ cần lưu link api đổi lãi suất chứ không thể thống kê toàn bộ và một cách liên tục được. Theo mình thì để ý 4 điểm sau :

  1. Vấn đề thiết kế database, lựa chọn các hệ CSDL không ràng buộc sẽ tăng về mặt performance. Việc thiết kế cấu trúc và cách lưu trữ cũng sẽ ảnh hưởng rất nhiều. Con bot sẽ lưu index hay cache hay toàn bộ nội dung cần tìm kiếm? Không thể đưa ra câu trả lời được vì không biết @ltd muốn lưu gì ? ( bách khoa toàn thư thì mình cũng bó tay chưa nghĩ ra )
  2. Chia tải truy cập : Có thể áp dụng chia tải bằng nhiều server ở các địa điểm khác nhau, chuyển sang một số chuẩn khác http như endpoint - websocket, socket (ý mình là raw socket, vì http cũng build trên socket nhưng tốn quá nhiều cost cho 1 lần request)
  3. Sử dụng database warehouse, phân tán CSDL, mỗi hạng mục có thể là một database server khác nhau
  4. Máy chủ - đường truyền - cổng mạng. Thiết kế có giỏi đến mấy mà card mạng chỉ có 1Gbs thì cũng ko thể chịu tải nổi lượng request .

Thực ra ở đây theo mình nghĩ bài toán vừa phải xử lý 1 lượng lớn request, vừa phải xử lý 1 lượng lớn dữ liệu, thì giải pháp chia tải request, phân tán dữ liệu là hợp lý nhất. Một số ý kiến cá nhân nếu có j sai mọi người bỏ qua

ntc viết 20:12 ngày 30/09/2018

Nếu em xây dựng em sẽ lựa chọn công nghệ như sau:

  1. Database: MySQL, PostgresSQL, phần log dùng nosql.
  2. Bot (Crawler): Hadoop
  3. Restfull api (backend): ngôn ngữ golang, dùng thêm memcache, hoặc redis, có thể Elasticsearch
  4. Client: v native app, ko thì react native fb.
Chế Tiệp Chân Khoa viết 20:25 ngày 30/09/2018

anh @ltd ko hỏi dùng cloud nào dù sao thì phương diện server cũng rất quan trọng, nếu đây là startup nghiêm túc mà anh Đạt dùng cloud của Mĩ (có lẽ chơi lun dedicated server) thì cũng có bất cập (theo Edward Snowden) !

Mai Anh Dũng viết 20:20 ngày 30/09/2018

Trong những Database open source hoặc miễn phí hiện nay thì DB nào dễ thao tác nhất nhỉ? Đạt có nghe nói về NoSQL nhưng không rõ nó là gì, có sử dụng được trong trường hợp này không nhỉ?

Khiem Nguyen viết 20:15 ngày 30/09/2018

thấy dạo này nghe nhiều người nhắc tới MongoDB

Cương Nguyễn viết 20:21 ngày 30/09/2018

NoSQL khá thích hợp với ý tưởng của a. NoSQL mạnh về tốc độ truy vấn, search, query… nó rất phù hợp với những loại app mà View Action là chủ yếu (Edit Action ít và không quan trọng)
Cấu trúc của NoSQL không phải là tập hợp các bảng với khóa chính khóa ngoại… mà là một tập hợp các Collection, mỗi collection được lưu trữ như là 1 JSon object.

Theo e thấy thì MongoDB, PostgresSQL đều ok.

Mai Anh Dũng viết 20:16 ngày 30/09/2018

MongoDB, PostgresSQL đều ok.

Discourse hiện đang dùng PostgresSQL, Đạt cũng suy nghĩ chọn 1 trong 2 món này.

  1. Bot (Crawler): Hadoop

Hadoop nghe nhiều nhưng Đạt không hiểu nó đặc biệt chỗ nào? Nghe nói dành cho Enterprise thôi?

ntc viết 20:22 ngày 30/09/2018

PostgreSQL là RDMS, nó tương tự như MySQL, MSSQL.
MongoDB là nosql.
Em cũng chưa dùng Hadoop, nhưng nó tương tự như Google MapReduce, dùng để xử lý hàng ngàn terabytes dữ liệu trên hàng ngàn nodes :D. Anh crawle nhiều site thì dùng chơi :D.

Itachi Citus viết 20:15 ngày 30/09/2018

Nếu anh muốn đơn giản thì xài Google app engine á. Nếu sử dụng python thì nó gần giống Django, nó có cấu trúc cơ sở dữ liệu riêng nhưng học cũng nhanh lắm, quan trọng hơn là nó tự scale từ cơ sở dữ liệu cho tới xử lý khi cần thiết mà người quản lý không cần quan tâm gì cả. Nếu anh đăng ký chương trình startup của nó thì sẽ có khoảng vài trăm $ để sử dụng trong vòng một năm.

À quên có một cái này. Không biết đối tượng khách hàng của anh là ai nhưng vói người Việt thì có lẽ sẽ không được đâu. Ở VN niêm yết mức lãi suât là như vậy, nhưng khi gửi số tiền lớn hoàn toàn có thể “deal” để nâng mức lãi suất. Cái này tùy ngân hàng và không phải ai cũng biết cả.

Chế Tiệp Chân Khoa viết 20:22 ngày 30/09/2018

http://cloudant.com cái này có vẻ hay này anh @ltd (DBaaS)

Bài liên quan
0