2013-03-23 18 views
20

Schemaless là một thuật ngữ hiện đang trôi nổi trong thế giới NoSql.Điều gì có nghĩa là lược đồ ít hơn đối với một Cơ sở dữ liệu NoSQL?

  1. Điều này có nghĩa là gì?
  2. Tôi có tài liệu với 3 thuộc tính ngay hôm nay và tôi chuyển sang sản xuất với nó, sau đó điều gì sẽ xảy ra với dữ liệu của tôi khi tôi cần thêm 2 thuộc tính vào tài liệu của mình?
  3. Đây có phải là vấn đề di chuyển mà tôi cần quản lý việc di chuyển dữ liệu hoặc cơ sở dữ liệu NoSql tạo ra ma sát nhiều như RDBMS hay dễ dàng hơn trong một vài ngày?

Trả lời

16

Schema-ít là một chút của một cái tên nhầm lẫn, nó tốt hơn để nghĩ về nó như:

  • SQL = Schema thực thi bởi một RDBMS trên Write
  • NoSQL = phần Schema thực thi bởi các DBMS trên lược đồ Viết, PLUS được thi hành đầy đủ bởi Ứng dụng trên Đọc (Lược đồ được Bên ngoài thực hiện)

Vì vậy, trong khi một kho dữ liệu NoSQL giả định không cho phép lưu trữ bất kỳ dữ liệu nào bạn thích (typica lly cặp giá trị chính, trong một tài liệu) mà không có kiến ​​thức trước về các khóa, hoặc các kiểu dữ liệu, nó sẽ là vô nghĩa trừ khi bạn có một số cơ chế để lấy ra và sử dụng dữ liệu. Vì vậy, về cơ bản lược đồ được di chuyển một phần từ RDBMS vào mã ứng dụng. Tôi nói một phần vì bạn đã thêm các chỉ mục để ghi lại các bộ sưu tập và phân chia dữ liệu để thực hiện, do đó, NoSQL DBMS sẽ có một lược đồ được xác định cục bộ và có thể được thực thi thông qua các ràng buộc duy nhất.

Để thêm thuộc tính bổ sung vào tài liệu/đối tượng trong cửa hàng. Tùy thuộc vào khoảng đệm bao quanh tài liệu (không gian chưa sử dụng), trong khối dữ liệu vật lý, việc thêm một vài cặp khóa giá trị vào tài liệu có thể dẫn đến tài liệu phải được chuyển đến một khối lưu trữ liền kề lớn hơn, và các chỉ mục liên quan được xây dựng lại. Nếu bạn dự định sử dụng các khóa mới trong truy vấn thường được sử dụng thì bạn sẽ muốn thêm một chỉ mục mới phù hợp, điều này rõ ràng sẽ yêu cầu một số lưu trữ vật lý, mất một thời gian để xây dựng ban đầu và có thể dẫn bạn đến hỏi sysadmin cấp thêm bộ nhớ cho DBMS, để cho phép (các) chỉ mục mới được lưu trữ.

+0

Điểm tốt về phân bổ không gian. Nhưng cụ thể cho điểm 2 & 3, làm cách nào để quản lý dữ liệu w.r.t để di chuyển dữ liệu? Là một sản phẩm NoSQl đủ thông minh để phát hiện những thay đổi đang gia tăng và không phá vỡ v/s phá vỡ? –

+2

Phụ thuộc vào sản phẩm, nhưng nói chung nếu bạn muốn thêm thuộc tính/khóa bổ sung vào tài liệu, tất cả những gì bạn cần làm là thay đổi mã ứng dụng để lưu trữ/sử dụng cặp giá trị khóa mới. DBMS không quan tâm đến những gì được lưu trữ trong một tài liệu nếu nó không được lập chỉ mục, và giả sử có đủ không gian được phân bổ cho mỗi tài liệu, sao cho DBMS không phải cấu trúc lại nó. – arober11

+0

Vì vậy, chúng tôi cần tính đến khả năng tăng kích thước tài liệu trước khi quay tay? –

2

Một chút vào cuối ngày nhưng trong khi tìm kiếm về chủ đề này một lần nữa tôi tìm thấy bài viết này

http://tech.pro/tutorial/1189/basics-of-ravendb-nosql

Tham khảo phần 3 trong bài viết này, tôi sẽ báo lại cho dễ dàng.

Việc thêm và thay đổi mô hình dữ liệu cho RavenDB không thể đơn giản hơn. Kể từ nó là một cơ sở dữ liệu NoSQL, nó có thể xử lý bổ sung và xóa cho các mô hình của bạn rất đơn giản. Nếu thuộc tính được thêm vào lớp học của bạn, nó sẽ là được đặt thành giá trị mặc định của loại đó. Nếu thuộc tính bị xóa, sau đó khi deserialization giá trị đó sẽ bị bỏ qua. Không còn nhiều tiếng ồn với Kịch bản SQL.

Đây có vẻ là câu trả lời hợp lý cho RavenDB.

Các vấn đề liên quan