Đề xuất cơ sở dữ liệu cho một cộng đồng mạng xã hội / cơ sở tri thức?


12

Tôi đang xem xét các loại cơ sở dữ liệu khác nhau và DBMS cho một dự án mới mà tôi muốn bắt đầu vào mùa hè.

Tôi đã xây dựng các hệ thống trong MySQL và postgreSQL, bây giờ tôi muốn mở rộng kiến ​​thức và kinh nghiệm về Cơ sở dữ liệu.

Dự án của tôi sẽ là một loại mạng xã hội / điều kiến ​​thức tổng hợp. (vẫn chưa phát triển một thuật ngữ để mô tả nó).

Tôi đã xem xét:

  • Cassandra (sử dụng loại ngôn ngữ truy vấn riêng); Nó có vẻ tốt cho tính năng nội dung phong phú và cung cấp thực thi truy vấn hiệu suất cao. Tuy nhiên tôi không quá quan tâm đến nó vì nó đòi hỏi môi trường java để hoạt động và tôi không muốn làm gì với Oracle.
  • MongoDB (loại DBMS noQuery); khả năng mở rộng tuyệt vời tuy nhiên bạn mất tất cả các khả năng đã có trên ngôn ngữ SQL đã được chứng minh như các truy vấn thông tin doanh nghiệp.

Yêu cầu của hệ thống:

  • Văn bản dữ liệu , ngày, giờ, xml, số nguyên nhỏ, blob,
  • Cấu trúc / hành vi : bình thường hóa 3NF, không thời gian thực, quan hệ, có thể mở rộng, mạnh mẽ
  • Môi trường: unix / linux, không có JAVA!, Tốt nhất là chạy trên C

Tôi đã tự hỏi nếu bạn có thể chỉ cho tôi bất kỳ hệ thống cơ sở dữ liệu nào khác mà tôi nên nghiên cứu.

Tôi cũng đã xem xét Cơ sở dữ liệu quan hệ đối tượng, tôi khá thích ý tưởng họ làm việc với các đối tượng PHP (PDO) tuy nhiên hiệu suất của chúng có vẻ hơi kém.

Xem như sẽ có DBA ở đây, bất kỳ phản hồi nào về các hệ thống mà bạn đã vận hành sẽ được đánh giá cao.

Cảm ơn


3
Nếu bạn muốn 3nf bình thường hóa, bạn cần phải làm một cửa hàng quan hệ. Giai đoạn = Stage.
JNK

2
Tôi sẽ không gõ Java chỉ vì nó là "Oracle". Sử dụng các công cụ thích hợp cho công việc. Nếu Java là công cụ tốt nhất, tôi sẽ sử dụng nó. Nếu C là công việc phù hợp, sử dụng nó. Tập trung vào những gì mỗi công cụ mang lại cho bạn, ưu và nhược điểm. Đưa ra quyết định được giáo dục tốt về điều đó (cùng với phía DB), thay vì dựa trên cảm giác.
Chris Aldrich

Câu trả lời:


4

Yêu cầu trừu tượng của bạn hét lên "PostgreSQL" với tôi. Tuy nhiên, tôi nghĩ rằng nó đáng để theo kịp những gì giai cấp tư sản đang làm, vì vậy đây là một danh sách các công cụ khác nhau mà bạn có thể muốn kiểm tra.

Công cụ miễn phí

  • CouchDB - một trong những cơ sở dữ liệu NoQuery đầu tiên, hệ thống truy vấn / giảm bản đồ mạnh mẽ, phân tán cao và có khả năng chịu lỗi. Một trong những ứng cử viên tốt hơn của NoQuery.
  • Hyperdex - bảng băm phân tán, rất mới với khả năng tìm kiếm.
  • Riak - bảng băm phân phối xứng đáng với một số tôn trọng.

Những thứ miễn phí kỳ lạ

  • Metakit - nhiều hơn một cơ sở dữ liệu nhúng như SQLite nhưng không dựa trên SQL, do đó mang tính thủ tục hơn.
  • FramerD - giống như một cơ sở dữ liệu "mạng" cổ điển, rất trung tâm con trỏ. Có lẽ đã chết?
  • Magma - Smalltalk OODBMS. Mát mẻ nhưng không được ghi chép lại.

Những thứ không miễn phí

  • AllegroGraph - Cơ sở dữ liệu RDF (đồ thị), hỗ trợ SPARQL. Lisp có hương vị.
  • Bộ nhớ cache - cơ sở dữ liệu quan hệ lai / OO, ban đầu dựa trên MUMPS (IIRC).
  • Tính khách quan - Một trong số ít các 3MB thực sự lớn cuối cùng. Rất mạnh mẽ, ấn tượng và đắt tiền.
  • VoltDB - Cơ sở dữ liệu quan hệ có khả năng mở rộng cao. Hỗ trợ SQL "nhất". Rất mới. Tôi đoán họ cũng có một phiên bản cộng đồng.

Phần kết luận

Tôi đã không sử dụng bất kỳ trong số những điều này. Tôi đã chơi với hầu hết trong số họ một chút và luôn luôn quay lại với PostgreSQL. Nhìn vào yêu cầu của bạn, điều duy nhất PostgreSQL không đáp ứng được là khả năng mở rộng. Mặt khác, với mục đích của tôi, việc ném 4000 phần cứng vào một máy cơ sở dữ liệu chuyên dụng đơn giản hơn nhiều so với ném 4000 nút đám mây hoặc các máy cấp thấp vào vấn đề này. Và có nhiều cách để đạt được khả năng mở rộng với PostgreSQL, chẳng hạn như với EnterpriseDB .

Thật thú vị khi chơi xung quanh với những thứ này ở bên cạnh, nhưng khi đến lúc đưa dữ liệu sản xuất có giá trị, không thể sản xuất vào một thứ gì đó, một loạt các thuộc tính nhàm chán như độ tin cậy, ổn định và khả năng tồn tại lâu dài sẽ xuất hiện.

Thử nghiệm suy nghĩ cho bạn

Xem xét điều này. Hãy tưởng tượng bạn là Mark Zuckerberg và bạn phải chọn từ bỏ cơ sở mã hoặc dữ liệu của mình. Bạn có thể giữ tất cả các nhân viên phát triển của mình, nhưng bạn phải từ bỏ tất cả mã của mình mỗi dòng, nói ngay cả những ký ức của nhà phát triển về cách họ triển khai mọi thứ đã biến mất nhưng bạn phải giữ tất cả tài khoản người dùng và tất cả người dùng của bạn đã tải lên dữ liệu và tất cả những thứ đó, hoặc bạn có thể từ bỏ tất cả dữ liệu. Giữ tất cả các cấu trúc và máy chủ và cấu hình, thiết lập, nhưng mất mọi hàng trong mỗi bảng trong mỗi cơ sở dữ liệu.

Rõ ràng là sẽ mất dữ liệu. Tại sao tất cả người dùng của bạn sẽ tạo lại tất cả dữ liệu đó? Hãy nghĩ về tất cả các dữ liệu tiếp thị bị mất, đó là cách Facebook thực sự kiếm tiền của họ. Và có rất nhiều doanh nhân đang chảy nước miếng khi có cơ hội để mọi người sử dụng bản sao Facebook của họ, bây giờ tất cả những người dùng Facebook cũ bị tước quyền sẽ ra khỏi đó để xem xét các lựa chọn thay thế. Mặt khác, nếu họ mất codebase, họ có thể xây dựng lại nó, thậm chí có thể tốt hơn bây giờ, nhưng họ có thể có một cái gì đó trực tuyến theo thứ tự rất ngắn. Họ có thể muaFacebook của người khác sao chép cơ sở mã và tải nó lên với dữ liệu thực, nhưng bạn không thể sao chép dữ liệu của họ. Nếu Facebook vẫn có dữ liệu quan trọng của mọi người trên máy chủ của họ, thì ưu đãi để lại thấp hơn nhiều. Vẫn tệ, nhưng ít hơn nhiều. Đáng ngạc nhiên là ít như vậy.

Điều trớ trêu là việc mất tất cả dữ liệu của bạn trong một tai nạn kỳ lạ sẽ dễ dàng hơn nhiều so với việc mất tất cả mã của bạn. Tuy nhiên, đối với hầu hết các công ty internet, dữ liệu công ty, đó tài sản quý giá nhất của bạn. Và đây là một lý do mạnh mẽ để xem xét sử dụng một cơ sở dữ liệu quan hệ truyền thống, đã được kiểm chứng thời gian, lỗi thời.


Tóm tắt chủ đề bình luận dài đã bị xóa từ đây: "Thật không công bằng khi ngụ ý rằng các cửa hàng NOSQL bằng cách nào đó sẽ làm cho nhiều khả năng bạn sẽ mất dữ liệu".
Jack nói hãy thử topanswers.xyz

Những gì tôi đang nói phải làm với tuổi tác và sử dụng rộng rãi, không phải với thiết kế của công cụ lưu trữ.
Daniel Lyons

6

Cũng xem xét rằng không có lý do tại sao bạn không thể sử dụng cơ sở dữ liệu quan hệ cho một số thứ và cơ sở dữ liệu nosql cho những thứ khác.


0

Nói về nosql, tôi chỉ có 1 điều để thêm về tài liệu tham khảo Facebook:

Nếu bạn có kế hoạch mở rộng quy mô lớn, tôi khuyên bạn nên có một thân thiện với động cơ DB so với thân thiện với nhà phát triển.

Thoát khỏi MongoDB thân thiện với nhà phát triển và siêu nhanh, không thể mở rộng phân tán theo địa lý và không có cách nào để sao lưu hiệu quả và dễ dàng. Mặc dù ở đây chúng tôi sử dụng MongoDB, nhưng có vẻ như Rịa hoặc CouchDB trông đẹp hơn trong các thông số kỹ thuật cho sysadmin (Tôi không có kinh nghiệm với Riak hoặc CouchDB)


2
Nếu bạn chọn chia tỷ lệ lớn, đó là vì bạn đã thu nhỏ từ nhỏ đến nhỏ, và từ nhỏ đến nhỏ, và trên đường đi, bạn đã học được một số điều sẽ giúp bạn có những lựa chọn đúng đắn. Khi bạn sẵn sàng mở rộng quy mô, bạn có thể đủ khả năng cho các kỹ sư biết cách mở rộng quy mô.
jcolebrand
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.