Database gì cho web service tra từ điển

Mình đang học Golang và định làm bài tập bằng cách viết một cái web service nhỏ nhỏ tra từ điển việt - anh, anh - việt.

Yêu cầu

  • Nhanh :smile:
  • Có thể autocomplete được

Vẫn đang phân vân là phần database kiểu gì ?

Một số lựa chọn đang có trong đầu:

  • Dump data ra thành một file rồi viết thuật toán riêng để đọc (Câu trả lời này trên SO có vẻ hợp lí http://stackoverflow.com/a/10017860/3976412)
  • NoSQL -> Redis zrangebylex (autocomplete)

Thêm nữa

2 Likes

Hình như cái này thuộc dạng big data
Theo ý kiến cá nhân mình, nếu xài database table, thì nên chia càng nhiều bảng càng tốt (Theo các tiêu chí nào đó) để giảm thời gian query.
Ví dụ, theo tiêu chí ngôn ngữ: Mỗi một ngôn ngữ là một bảng.
P/S: Mình biết có nhiêu đó.:grin:

Cũng không hẳn là Big Data. Tuy số row có thể lên đến hàng triệu nhưng mà cái này là dạng key - value đơn giản :wink: .

Mình đã tìm ra giải pháp là dùng Binary file. Mình sẽ lấy ví dụ với định dạng của MDict (từ điển nổi tiếng, cross-platform từ thời Window Phone). Định dạng từ điển của nó là close source như mà đã được reverse engine gần như đầy đủ.
Parser: chạy trên browser, Javascript: https://github.com/fengdh/mdict-js . Bạn có thể thử với 1 file mdd bất kì và sẽ thấy tốc độ ~ real time. Nên nhớ đây là browser :slight_smile:
Parser viết ở vài ngôn ngữ khác:
C. NET: https://mdict.codeplex.com/
Python: https://bitbucket.org/xwang/mdict-analysis

1 Like

Nó truy xuất trực tiếp từ file thì tất nhiên là nhanh chứ nhỉ? Vì tốc độ của một app theo client-server còn phụ thuộc vào nhiều yếu tố khác nữa.
Mà định dạng MDict này chỉ có vài ngôn ngữ đọc được nó, mình không có xài được :smirk:

Làm chơi thì làm bằng gì cũng được . Làm thật thì ko dùng db . Mà phải viết để đọc được data của thằng khác . Ưu tiên các định dạng mở .

1 Like

ANh có biết định dạng từ điển nào mở không ? Đã đọc được định dạng của lingoes và mdict

reverse engineering nó thế nào ?

Nói chung là giải thích rất cặn kẽ. Đã có sẵn code cho vài ngôn ngữ, có thể dễ dàng port sang ngôn ngữ khác :wink:


Mục features có kể tên vài định dạng phổ biến .

1 Like

Cho em hỏi cái là sao lại không dùng db ạ?

Sao anh không dùng dạng bgl á, từ điển vô số luôn :smile:

1 Like

Tốc độ mình không kiểm soát được. Không nén được. Và tốn ram không cần thiết vì phải chạy database

Ý làm em đang tìm định dạng từ điển open source đó anh. Có đầy đủ spec để tự tạo từ điển.

Vậy cho mình hỏi thêm là định dạng nén thì muốn chỉnh sửa như thêm/bớt như thế nào? (Từ phía người dùng), rồi tạo relation đến những cái khác thì làm sao? ví dụ như tạo danh mục cho mỗi từ.

Không nằm trong mục tiêu của mình. :wink:

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?