Làm thế nào RDBMS có thể được coi là một mốt nhất thời?


11

Hoàn thành trình độ A tính toán của tôi vào năm 2003 và nhận được bằng Điện toán vào năm 2007 và học giao dịch của tôi trong một công ty có nhiều sử dụng SQL, tôi đã nảy ra ý tưởng về Cơ sở dữ liệu quan hệ được sử dụng để lưu trữ.

Vì vậy, mặc dù còn khá mới để phát triển, tôi đã rất ngạc nhiên khi đọc một bình luận (trên /software//q/89994/12436 ) cho biết:

[Một số nhà phát triển] coi thường [SQL] và nghĩ rằng nó và RDBMS là một mốt nhất thời

Rõ ràng, một nhà phát triển có thẩm quyền sẽ sử dụng đúng công cụ cho đúng công việc và sẽ không tạo cơ sở dữ liệu quan hệ khi ví dụ tệp phẳng hoặc giải pháp khác để lưu trữ là phù hợp, nhưng RDBM rất hữu ích trong một số lượng lớn trường hợp, vì vậy làm thế nào chúng có thể coi là mốt nhất thời?


1
Vui lòng cung cấp ngữ cảnh - bạn đã đọc nhận xét đó ở đâu?
Eran Galperin

8
Bất cứ điều gì và tất cả mọi thứ được coi là một mốt bởi ai đó ở đâu đó.
Péter Török

Péter rất đúng, chỉ tò mò là tại sao?
StuperUser

5
Những người như vậy thường có một mô hình khác mà họ muốn thúc đẩy, đi ngược lại ý tưởng về cơ sở dữ liệu quan hệ. Do đó cơ sở dữ liệu quan hệ là xấu, và cần phải đi xa. Nhìn vào cơ sở dữ liệu hướng đối tượng, chưa đạt đến khối lượng quan trọng.

Câu trả lời:


28

Khóa nằm trong R trong RDBMS, viết tắt của quan hệ. Trái với niềm tin phổ biến, nó không có nghĩa là mối quan hệ giữa các bảng, mà thực tế là, mỗi bảng là quan hệ theo nghĩa toán học của từ này .

Mô hình quan hệ có ý nghĩa khá quan trọng. Bạn phải mô hình hóa dữ liệu của mình để phù hợp với các mối quan hệ và bình thường hóa mô hình đó . Nếu ứng dụng của bạn được thiết kế theo mô hình hướng đối tượng, mô hình quan hệ không phù hợp. Điều này được biết đến rộng rãi là sự không phù hợp trở kháng quan hệ đối tượng .

Một cách tiếp cận cho sự không phù hợp này là ORM (ánh xạ quan hệ đối tượng), đã được phổ biến rất nhiều. Nhưng chúng không phải là giải pháp thực sự, chúng giống như giải quyết vấn đề hơn. Họ vẫn không thực sự giải quyết vấn đề ánh xạ kế thừa lớp thành mô hình quan hệ.

Giải pháp thực sự cho sự không phù hợp có liên quan đến đối tượng là các bộ xử lý tín hiệu không chính xác. Công cụ phổ biến hỗ trợ OOBD nguyên bản là PostgreSQL, là OO / RDBMS lai. Một OODBMS khác là Zope Object DB , được xây dựng bằng Python và trong thiết lập điển hình sử dụng RDBMS làm công cụ cơ bản.

Cách tiếp cận khác là có nhiều logic được triển khai ở cấp ứng dụng hoặc trung gian và sử dụng giải pháp NoQuery để lưu trữ bên dưới.

Cả OODBMS và NoQuery đều không phải là "tệp phẳng".


2
@Daniel: ông chắc chắn không nói rằng mô hình quan hệ là một vấn đề cần một giải pháp; ông nói chính xác những gì bạn nói - nếu bạn cam kết mô hình hóa phần mềm của mình theo mô hình hướng đối tượng, thì mô hình quan hệ là một vấn đề.
Carson63000

1
@Carson: Tôi xin lỗi, nhưng đó không phải là cách tôi đọc câu trả lời. @vartec nói: "Giải pháp thực sự là OODBMS (không may gặp phải nhiều lực kéo)." Tôi tôn trọng không đồng ý: Tôi muốn nói giải pháp thực sự là hiểu mô hình quan hệ và sử dụng nó một cách hiệu quả. OODBMS là giải pháp của một người nghèo khi bạn phải sử dụng các nguyên tắc OO cho mô hình dữ liệu của mình, đây chắc chắn không phải là trường hợp phổ quát.
Daniel Pryden

1
@Daniel: Tôi nghĩ rằng anh ấy có nghĩa là một 3MBMS là giải pháp thực sự, một lần nữa, nếu bạn cam kết mô hình hóa phần mềm của mình theo mô hình hướng đối tượng. Không phải là mô hình quan hệ là một vấn đề trong chính nó, và rằng 3MBMS là giải pháp cho nó. Nhưng dù sao đi nữa, không có nhiều tranh luận về việc ai trong chúng ta hiểu chính xác Vartec, tôi sẽ cúi đầu và để anh ta làm rõ nếu anh ta muốn. :-)
Carson63000

1
@Daniel: Bối cảnh rất quan trọng. Tôi thực sự nói rằng, mô hình quan hệ đó là một vấn đề trong bối cảnh của OOP. Bây giờ, OOP phổ quát hay không, vượt quá phạm vi của câu trả lời này. Và btw. OODBMS không phải là "giải pháp của người nghèo", ORM là.
vartec

1
@vartec: OK, tôi rút lại downvote của mình. (Tôi thực sự không thể xóa nó trừ khi bài đăng được chỉnh sửa.) Tôi nghĩ rằng tốt nhất nên làm rõ rằng có những giải pháp không liên quan đến OO. Và vâng, tôi đồng ý rằng một ORM thậm chí còn tệ hơn cả một 3MBMS.
Daniel Pryden

13

Tôi đã tuyên bố bạn trích dẫn trong câu hỏi trên. Nếu bạn muốn một trích dẫn để xác minh giả định của tôi về các nhà phát triển trên trang web này, thì hãy đọc câu trả lời của tôi cho câu hỏi sau đây và xem lại phản ứng dữ dội của các bình luận và phản hồi tôi nhận được cho những gì tôi vẫn coi là một câu trả lời chấp nhận được.

Lập trình viên có kinh nghiệm nên biết truy vấn cơ sở dữ liệu?

Tôi đã khẳng định rằng nếu cơ sở dữ liệu RDBMS đang được sử dụng mà bất kể Linq hay ORM, nhà phát triển nên có kiến ​​thức nâng cao về SQL.

Đây dường như là một khẳng định rất phổ biến vì có sự khác biệt đáng kể về quan điểm về tầm quan trọng của SQL, với suy nghĩ ít tôn trọng rằng RDBMS vốn đã thua kém các cơ sở dữ liệu NoQuery như MongoDB.

EDIT: Để thêm vào yêu cầu của tôi, tôi sẽ trích dẫn người dùng SK-logic:

chỉ cần nhớ rằng tất cả cơn sốt RDBMS này là một xu hướng tương đối gần đây. Trước đó chúng tôi đã có một loạt các phương pháp tiếp cận. Bạn rõ ràng đang làm việc trong một công ty trẻ, cùng với các nhà phát triển ở độ tuổi của bạn, và do đó bạn không có cơ hội tiếp xúc với các phương pháp lưu trữ cũ hơn và vững chắc hơn. May mắn thay, xu hướng gần đây này đã giảm dần và những cách thức cũ tốt đang quay trở lại, được đổi tên thành 'nosql'.


Hoàn toàn đồng ý với bạn rằng các nhà phát triển làm việc với DB nên hiểu SQL để có thể khái niệm hóa một truy vấn theo quan hệ chính xác. Tuy nhiên, hy vọng, Linq / ORM không tối ưu hóa các truy vấn về tính trừu tượng theo cách ảnh hưởng đến các truy vấn được ghi trong kho dữ liệu.
StuperUser

Lý do duy nhất bất cứ ai sẽ nói "cơn sốt RDBMS này là một xu hướng tương đối gần đây" là để thể hiện bộ râu của họ màu xám như thế nào. Lần đầu tiên tôi làm việc về loại ứng dụng doanh nghiệp và doanh nghiệp mà bạn mô tả vào năm 1995 - cơ sở dữ liệu quan hệ thống trị sau đó, chúng thống trị bây giờ, chúng thống trị ở mọi nơi tôi đã làm việc trong 16 năm can thiệp. Bây giờ rõ ràng tôi không già như một số người, nhưng khi tôi nói "tương đối gần đây", tôi không có nghĩa là "trong hai mươi năm qua".
Carson63000

Vấn đề là nhiều nhà phát triển đã đánh đồng sai RDBMS với SQL. SQL là một ngôn ngữ thực sự khủng khiếp theo tiêu chuẩn hiện đại. Đó là một triển khai hoàn hảo và không đầy đủ của ngôn ngữ "quan hệ" (SQL hoàn toàn không liên quan và đó là một phần của vấn đề) đã không phát triển nhiều trong 30 năm qua. Nhiều người sử dụng SQL hầu như không hiểu mô hình quan hệ - tất cả những gì họ biết là SQL và vì vậy họ cho rằng mô hình quan hệ là nguyên nhân của sự thất vọng của họ.
nvogel

@dportas, Chắc chắn SQL không hoàn hảo, nhưng nó rất quan trọng đối với mọi công việc mà tôi có mà tôi đã tìm ra cuộc sống dễ dàng hơn nhiều khi tôi bắt đầu NGHE trong SQL. Nếu bạn đưa cho tôi một mô hình quan hệ và hỏi tôi một câu hỏi bằng tiếng Anh đơn giản thì tôi có thể viết cho bạn một "câu trả lời" bằng SQL. Bạn nói rằng "tất cả những gì họ biết là SQL và vì vậy họ cho rằng mô hình quan hệ là nguyên nhân của sự thất vọng của họ", vậy thì họ không biết rõ về SQL. Tại sao mọi thứ phải được phục vụ cho kẻ hủy diệt phổ biến thấp nhất mọi lúc, như một lập trình viên Ấn Độ kiếm được dưới 10 đô la / giờ với một nền giáo dục kém.
maple_shaft

@maple_shaft, nếu bạn đang nghĩ về SQL thì bạn đang nghĩ về một số điều rất sai trong các điều khoản quan hệ. Điều cần khuyến khích là các nhà phát triển hiểu các khái niệm nền tảng như mô hình quan hệ thay vì tập trung vào các ngôn ngữ như SQL. Nếu nhiều người hiểu các khái niệm nền tảng thì có lẽ SQL đã được thay thế bằng những thứ tốt hơn.
nvogel

9

mốt :

một thứ trở nên rất phổ biến trong một khoảng thời gian ngắn, và sau đó bị lãng quên với cùng tốc độ. "

RDBMS đã có từ rất lâu đời (ít nhất là theo thuật ngữ CS), vì vậy, bất cứ ai nói rằng có nghĩa là nói điều gì khác hoặc là không biết gì.


2
Tôi muốn nói điều gì khác, xem câu trả lời của tôi dưới đây.
maple_shaft

Câu trả lời là tại chương

3
Có lẽ sẽ tốt hơn nếu sử dụng một từ điển thực sự trái ngược với urbandipedia.
Aaronaught

Aaronaught - Thế còn Princeton? "Một sự quan tâm theo sau với lòng nhiệt thành thái quá." wordnetweb.princeton.edu/perl/ khăn
Shauna

3

Sự thay thế cho RDBMS không chỉ là một tệp phẳng. Khi tôi còn đi học, OODBMS là điều mới và giáo sư của tôi đã đúng khi ông gọi nó là mốt nhất thời. Bạn nên xem qua các mô hình khác nhau và lưu ý các xu hướng. Tôi đã thấy sự phụ thuộc ngày càng tăng vào OLAP và sẽ sẵn sàng đặt cược một hệ thống đa chiều mới có thể xử lý dữ liệu nhanh hơn chỉ quanh quẩn.


Có nên "sẵn sàng làm người mới" => "sẵn sàng đặt cược mới" không?
Nhị phân nhị phân

Oh chắc chắn, sử dụng tập tin phẳng làm ví dụ. Đó là một liên kết tốt đến các mô hình DB.
StuperUser

@Binary Có và chỉnh sửa để phản ánh nó.
Christopher Bibbs

3

Vấn đề là nhiều nhà phát triển đã đánh đồng sai RDBMS với SQL. SQL là một ngôn ngữ thực sự khủng khiếp theo tiêu chuẩn hiện đại. Đó là một triển khai hoàn hảo và không đầy đủ của ngôn ngữ "quan hệ" (SQL hoàn toàn không liên quan và đó là một phần của vấn đề) đã không phát triển nhiều trong 30 năm qua. Nhiều người sử dụng SQL hầu như không hiểu mô hình quan hệ - tất cả những gì họ biết là SQL và vì vậy họ cho rằng mô hình quan hệ là nguyên nhân của sự thất vọng của họ.


1

Không có ngữ cảnh, thật khó để xác định ai / tại sao tuyên bố rằng RDBM được coi là mốt nhất thời.

Trong ngắn hạn đến trung hạn (5 -10 năm) và tôi sẽ nghĩ thậm chí còn lâu hơn nữa sẽ không biến mất. RDBM cung cấp một phương pháp lưu trữ, xử lý và truy xuất dữ liệu quan hệ hiệu quả và hiệu quả, đó là những gì hầu hết các công ty có thể là khách hàng / đơn đặt hàng, hành khách / vé, v.v.

Có những lựa chọn thay thế khác như NoQuery dường như đang phát triển phổ biến với dự án nguồn mở.

Vì OLAP đây là những cơ sở dữ liệu chuyên môn thực sự (trong tâm trí của tôi) được thiết kế để cho phép doanh nghiệp cung cấp thông tin thống kê kịp thời và hữu ích về một công ty và chạy các kịch bản "what if" trên dữ liệu hiện tại. Tất nhiên trong gần như tất cả các trường hợp, dữ liệu hiện tại này đến từ một RDMB và được xử lý và sau đó được chèn vào cơ sở dữ liệu OLAP.


1

Cơ sở dữ liệu quan hệ là một mốt theo cùng nghĩa là vi tính là một mốt nhất thời.


1

Câu trả lời đơn giản là không. RDBMS không phải là một mốt nhất thời. Khi bạn đọc một cái gì đó trên một trang web cho LinqPad, hãy nhớ rằng mục đích của họ là bán giấy phép cho sản phẩm của họ.


Câu hỏi là về lý do tại sao nó sẽ được coi là mốt nhất thời, không phải là nó hay là lời hùng biện quảng cáo của LinqPad. Tiêu chuẩn LinqPad là miễn phí.
StuperUser

Câu hỏi đến từ việc anh ấy đọc bài hùng biện quảng cáo của LinqPad. Chỉ cần chỉ ra rằng anh ta nên dùng với một hạt muối.
Tundey

Không, không phải vậy, nó xuất phát từ nhận xét của maple_shaft về lập trình viên.stackexchange.com/questions/89994 / . Bản sao của LinqPad được chụp bằng một nhúm muối, nhưng tôi tò mò liệu các nhà phát triển có đồng ý với một trong hai tuyên bố hay không.
StuperUser

Đúng, lời nói quảng cáo của LinqPad là việc viết SQL để truy vấn RDBMS là lỗi thời, không phải bản thân RDBMS đã bị lỗi thời. Họ đang bán một cách tốt hơn để sử dụng RDBMS, không phải là một cách thay thế cho họ.
Carson63000

@StuperUser và Carson63000: Hiểu rồi. Lỗi của tôi.
Tundey

0

Fad không phải là từ thích hợp vì chúng đã tồn tại trong một thời gian dài. Tôi nghĩ rằng bạn có thể bắt đầu đưa ra lập luận rằng công nghệ này rất lâu đời và có lẽ đã đến lúc đưa ra điều tiếp theo - có lẽ kiến ​​trúc NoQuery


0

Các Wiki Def. của Fad , định nghĩa thuật ngữ "mốt" như sau: Mốt là bất kỳ hình thức hành vi nào phát triển trong một dân số lớn và được theo dõi nhiệt tình trong một khoảng thời gian, nói chung là kết quả của hành vi được coi là tiểu thuyết theo một cách nào đó. Một mốt được cho là "bắt kịp" khi số người chấp nhận nó bắt đầu tăng nhanh. Các hành vi thường sẽ mờ đi nhanh chóng một khi nhận thức về tính mới.

Vì những người theo RDBMS đã không biến mất nhanh chóng và sẽ không biến mất trong nhiều năm tới (nhờ vào đống ứng dụng sản xuất khổng lồ sử dụng nó), chúng tôi không thể nói rằng đó là một mốt. Trong thực tế, các khái niệm cốt lõi của RDBMS vẫn khá ổn định khi có rất nhiều công nghệ khác thay đổi (và vẫn đang thay đổi) một cách đáng kể.

Khái niệm RDBMS (và phương tiện chính của nó, SQL) đại diện cho một bước trong công nghệ, giống như nhiều công nghệ khác, có thể được thay thế bởi những thứ tốt hơn, đó là tất cả.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.