Nếu cơ sở dữ liệu quan hệ không mở rộng quy mô, không có gì. Đừng lo lắng về vấn đề mở rộng.
SQL có vấn đề với một số loại phân tích, nhưng nó không mất nhiều dữ liệu để kích hoạt vấn đề. Ví dụ: hãy xem xét một bảng duy nhất có một cột tham chiếu các hàng khác dựa trên một khóa duy nhất. Thông thường, điều này có thể được sử dụng để tạo cấu trúc cây. Bạn có thể viết các câu lệnh SQL nhanh tham chiếu hàng liên quan. Hoặc hàng liên quan của hàng liên quan. Trong thực tế, bạn có thể thực hiện bất kỳ số lần nhảy cụ thể. Nhưng nếu, đối với mỗi hàng, bạn muốn chọn một trường trên hàng liên quan đầu tiên trong chuỗi đáp ứng một số tiêu chí, thì nó trở nên phức tạp.
Xem xét một bảng các địa điểm văn phòng ở cấp quốc gia, tỉnh / bang, quận, thị trấn và làng, với mỗi văn phòng tham chiếu đến văn phòng mà nó báo cáo. Không có gì đảm bảo rằng mỗi văn phòng báo cáo của văn phòng chỉ tăng một cấp. Đối với một tập hợp các văn phòng được chọn, không phải tất cả ở một cấp, bạn muốn liệt kê từng văn phòng quốc gia được liên kết. Điều này đòi hỏi các vòng lặp của các thống kê SQL và sẽ mất nhiều thời gian ngay cả ngày hôm nay. (Tôi đã từng có 30 giây cho một lựa chọn 30 văn phòng, nhưng đó là một thời gian dài trước đây - và việc chuyển sang các thủ tục được lưu trữ đã giúp một chút.)
Vì vậy, phương án thay thế là đưa toàn bộ cấu trúc vào một khối dữ liệu lớn, gắn nhãn và lưu trữ nó. Khi bạn muốn phân tích dữ liệu, hãy đọc tất cả dữ liệu vào bộ nhớ cùng một lúc, thiết lập các con trỏ để theo dõi cấu trúc và bạn có thể xử lý một vài triệu văn phòng trong chớp mắt.
Không ai trong số này có liên quan nhiều đến lượng dữ liệu. Chìa khóa là bản chất của tổ chức dữ liệu. Nếu một bố cục quan hệ có ích, thì RDBMS là thứ bạn muốn. Nếu không, một số loại lưu trữ số lượng lớn sẽ là bất cứ thứ gì từ một chút đến một triệu triệu lần nhanh hơn.
Lưu ý rằng nếu một trong những bộ dữ liệu này trở nên quá lớn để phù hợp với bộ nhớ, cơ sở dữ liệu phi SQL của bạn sẽ không hoạt động nữa. Một vấn đề khác là khi bạn cần dữ liệu từ nhiều khối cùng một lúc; bạn có thể làm điều này nếu và chỉ khi tất cả các khối khớp với bộ nhớ cùng một lúc. Và người dùng phải chờ trong khi bạn tải chúng lên.
Nếu cơ sở dữ liệu quan hệ của bạn sẽ gây ra sự cố cho bạn, nó sẽ làm như vậy trước khi bạn đưa nhiều dữ liệu vào đó. Vấn đề mở rộng duy nhất bạn có thể gặp phải là với chương trình của bạn khi khối dữ liệu bạn đang lắp ráp cho DB nosql - nếu bạn phải sử dụng một - sẽ trở nên quá lớn đối với nó. (Không đọc các lỗi hết bộ nhớ. Các ngôn ngữ mới hơn đôi khi làm những điều lạ với bộ nhớ.)