Helpex - Trao đổi & giúp đỡ Đăng nhập
17

Tôi đang viết lại một ứng dụng cho công ty của tôi yêu cầu cơ sở dữ liệu. Chúng tôi hiện đang sử dụng SQL Server 8 và tôi sẽ cập nhật cơ sở dữ liệu. Câu hỏi của tôi là sử dụng cơ sở dữ liệu nào. Tôi đã xem xét cả SQL Server 2008 r2 và PostgreSQL 9.

Cơ sở dữ liệu sẽ được lưu trữ trên hộp Windows Server 2008 và sẽ được sử dụng cho cả ứng dụng độc lập và trang web được liên kết được viết bằng .NET.

Một số điểm quan tâm của tôi là:

  1. Chi phí (rõ ràng là PostgreSQL thắng ở đây).
  2. Nó đã sẵn sàng cho giờ vàng chưa? Tôi đã đọc một số điều về nó tốt như SQL nhưng muốn một số đầu vào từ những người sử dụng nó.
  3. Dễ sử dụng. Tôi rất thoải mái với SQL Server. Tôi đã thử nghiệm với PostgreSQL và mặc dù nó khác với SQL Server nhưng tôi đang hiểu nó.
  4. Tốc độ. PostgreSQL có nhanh như SQL Server không?
  5. Tôi có thể sử dụng ADO.NET (.NET 4.0) với PostgreSQL và có được chức năng tương tự như Sử dụng SQL Server (sẽ sử dụng Linq hoặc Entity Framework) không?

Tôi sẽ KHÔNG chuyển đổi cơ sở dữ liệu cũ của chúng tôi trong SQL Server 8 sang cơ sở dữ liệu mới nên tôi không lo ngại về bất kỳ chuyển đổi nào.

Tôi sẽ quan tâm đến ý kiến ​​của mọi người về cả hai và nếu PostgreSQL là một giải pháp chấp nhận được cho một ứng dụng kinh doanh được đưa ra ở trên.

TIA

Brian

17 hữu ích 2 bình luận 21k xem chia sẻ
8

Điều này thực sự phụ thuộc vào kích thước DB của bạn và vùng thoải mái của bạn.

Phiên bản SQL Server Express là một cơ sở dữ liệu miễn phí đầy đủ chức năng có kích thước lên đến 4GB; hoàn toàn phù hợp cho hầu hết các ứng dụng nhỏ đến vừa. (sang một bên - IMHO, MS Licensing là điều tốt nhất từng xảy ra với cộng đồng mã nguồn mở !!)

PostgreSQL là một cơ sở dữ liệu miễn phí, đầy đủ chức năng với giới hạn 4Gb - tuy nhiên, PostgreSQL tuân theo phong cách quản lý cơ sở dữ liệu và SQL của Oracle. Nếu bạn không quen với điều đó, bạn có thể gặp phải một số vấn đề.

Việc ném Dot Net vào hỗn hợp sẽ tạo ra một nếp nhăn không đáng kể. Bạn có thể sử dụng .Net với PostgreSQL không? Có, nhưng Dot Net sẽ hoạt động tốt hơn với SQL Server. Bạn có thoải mái khi viết mã giao diện ODBC phức tạp không? Nếu có, PostgreSQL vẫn là một đối thủ. Nếu không, bạn sẽ tốt hơn với SQL Server.

8 hữu ích 5 bình luận chia sẻ
29

Necromancing ở đây.
Như SteveG đã chỉ ra, SQL-Server Express có lẽ là thứ bạn muốn.

Nhưng tôi đã sử dụng rộng rãi SQL-Server, SQL-Server Express và PostgreSQL, và bạn nên biết rằng SQL-Server Express có một số hạn chế khó chịu hơn ngoài kích thước DB:

  • Cài đặt yêu cầu đặc quyền của quản trị viên (và khởi động lại hệ thống)
  • ReportingService Express chỉ có thể kết nối với cơ sở dữ liệu cục bộ,
  • ReportingService Express không thể sử dụng các nguồn dữ liệu khác ngoài máy chủ sql cục bộ (không có ODBC)
  • Một số tính năng ReportingServices bị thiếu (ví dụ: đồ thị và định dạng xuất CSV / XML)
  • Bị giới hạn ở việc sử dụng RAM 1GB (Tương tự trong năm 2008/2012)
  • Được giới hạn trong một CPU duy nhất (sách báo: Giới hạn ở mức thấp hơn 1 Socket hoặc 4 lõi)
  • không phân vùng bảng và chỉ mục
  • không có lượt xem được lập chỉ mục
  • không phản chiếu cơ sở dữ liệu
  • không có cố vấn điều chỉnh cơ sở dữ liệu
  • không có dịch vụ thông báo
  • không thể gửi email (bạn có thể thực hiện việc này bằng quy trình CLR-Stored nếu bạn thực sự cần)
  • không thể sử dụng / gọi Dịch vụ Web (báo chí: không có Điểm cuối HTTP)
  • không có nhà môi giới dịch vụ
  • không có văn bản đầy đủ và không có tìm kiếm ngữ nghĩa (yêu cầu Dịch vụ nâng cao Express)
  • Công cụ hồ sơ không được bao gồm trong các phiên bản SQL Server Express. (có trình biên dịch SQL Express trên codeplex)
  • Dịch vụ Lập lịch công việc không khả dụng với SQL Server Express.
  • Tính năng nhập và xuất dữ liệu không khả dụng với SQL Server Express (có thể / phải tải xuống)
  • không đi kèm với SSIS


và như đã nói
- kích thước cơ sở dữ liệu 4GB (được nâng lên 10GB trong SQL 2008 R2 và SQL 2012)


Lưu ý rằng giới hạn 10GB không phải là 10GB hay 10 GiB (10 * 1024 3 ), nó thực sự là 10'240 MB (10 * 1'024 MB), thực tế chỉ là 95% của 10 GB mà tôi đã giải thích dưới dạng 10GiB (10'240'000'000 * 100 / 10'737'418'240)

Thêm vào đó là hạn chế mà Microsoft-SQL-Server sẽ chỉ chạy trên Windows (cho đến nay, cổng Linux của SQL-server hiện đang ra mắt, nhưng chỉ là CTP cho đến nay và không có BI).

Vì vậy, các điểm khác thường bị bỏ qua:

  • Trong Windows 7, bạn chỉ có thể có tối đa 20 kết nối đồng thời nhưng không có nhiều hơn.
    Nếu bạn cần thêm, bạn sẽ phải cài đặt SQL Server của mình vào HĐH Windows Server. Điều đó có nghĩa là nếu bạn sử dụng SQL-Server Express trong trường hợp sử dụng có hơn 20 người dùng đồng thời, bạn sẽ vẫn cần giấy phép máy chủ windows (số lượng kết nối không liên quan đến phiên bản SQL Server, mà là hệ điều hành). Có thể bạn sẽ gặp phải rào cản RAM 1GB trước khi bị tắc nghẽn.
  • Nếu bạn muốn tiết kiệm, bạn sẽ phải chạy công cụ db trên cùng một máy chủ với máy chủ web, với tất cả các hình phạt về hiệu suất.

Vì vậy, bây giờ đến điểm của bạn (theo thứ tự quan trọng)
5. Có, có Npgsql.dll (giấy phép MIT), vì vậy không cần ODBC
NHƯNG: Nếu mã của bạn sử dụng System.Data.SqlClient ở mọi nơi (ví dụ: tham số, đặc biệt là khi copy-paste trên toàn bộ mã) thì bạn sẽ phải viết lại nhiều thứ hơn chỉ là mã SQL (Thay vào đó, hãy sử dụng các lớp trừu tượng trong System.Data.Common hoặc hoặc các giao diện System.Data.IDB *).
Nếu mã của bạn sao chép SqlClient ở khắp mọi nơi, thì có thể lập luận rằng dù sao nó cũng cần viết lại.

  1. Tính dễ sử dụng:
    Đường cong học tập nhiều hơn một chút so với SQL-Server, nhưng nhìn chung, không quá khác biệt. pgAdmin có thể không đáp ứng đầy đủ các yêu cầu của bạn nếu bạn đã quen với SSMS, nhưng có một số công cụ quản lý và phát triển khác mà bạn có thể sử dụng (ví dụ: Navicat) rất gần với SSMS hoặc thậm chí là đầu nó.

4.Tốc độ. PostgreSQL có nhanh như SQL Server không?
Có và không. Nó thực sự có thể nhanh hơn. Được chấp nhận, bởi vì SQL-Server đã có nhiều công việc được thực hiện trên trình tối ưu hóa truy vấn, PostgreSQL có thể chậm hơn một chút khi so sánh với phiên bản Enterprise Ultimate của SQL-Server (hoặc bất kể tên hiện tại của phiên bản sát thủ). Nhưng, ai đã từng có phiên bản đó? Nếu bạn có thể sử dụng tất cả các CPU của mình với tất cả các lõi và tất cả RAM bạn muốn với PostgreSQL, bạn sẽ luôn nhanh hơn một số phiên bản SQL-Server Express hoặc Standard cắt giảm với 1 CPU và 1 đến vài GB RAM (windows giới hạn bạn ở 64GB trong 64-Bit afaik, với Linux, bạn có thể vượt quá giới hạn 4 GB RAM cho mỗi ứng dụng ngay cả trên bộ xử lý 32 bit với nhân bigmem và có thể đưa nó tới 64 GB RAM trên bộ xử lý 32 bit, chưa kể giới hạn 64-Bit), bất kể trình tối ưu hóa truy vấn trên SQL-Server được tối ưu hóa quá mức như thế nào. Mà nói, ý kiến ​​cá nhân của tôi từ việc sử dụng cả pg và ms là PostgreSql có trình tối ưu hóa truy vấn tốt hơn, nhưng đó chỉ là ý kiến ​​của tôi, tôi không có dữ liệu để sao lưu điều đó. Bên cạnh đó, windows (Windows 7) là một hệ điều hành chậm (lại là ý kiến ​​cá nhân, không có dữ liệu để sao lưu). Vì vậy, khi bạn có thể cho phép PG chạy trên Linux ở chế độ không đầu, nó gần như chắc chắn sẽ nhanh hơn SQL-Server, thậm chí là phiên bản cuối cùng dành cho doanh nghiệp.



Dấu chân bộ nhớ
Bạn hoàn toàn có thể cấu hình PostgreSQL. Bạn phụ trách tệp cấu hình. Có thể nhỏ hoặc lớn tùy thuộc vào cách bạn điều chỉnh cài đặt của mình. Diện tích bộ nhớ PG tổng thể để đạt được giống như SQL-Server trên Windows ở tốc độ so sánh sẽ thấp hơn một chút, điều này đặc biệt đúng khi bạn chạy nó ở chế độ không sử dụng trên Linux (không có GUI máy chủ).



Chi phí
Có, khá rõ ràng là PostgreSQL thắng ở đây. Đừng quên: Chúng ta không chỉ đề cập đến chi phí cấp phép Máy chủ mà còn cả hệ điều hành và quyền truy cập từ xa (ví dụ: giấy phép Citrix bổ sung rất đắt trên Windows so với truy cập SSH miễn phí trên Linux).
Và điều khác: PostgreSQL là OpenSource và Miễn phí. Nếu bạn so sánh nó với SQL-Server, bạn không nên so sánh nó với phiên bản Ultimate Enterprise Edition của máy chủ SQL (và máy chủ windows), nhưng với phiên bản bạn thực sự có thể mua được. Tuy nhiên, PostgreSQL sẽ luôn là một phiên bản cấp phép BSD nguồn mở hoàn toàn miễn phí, bao gồm tất cả hoàn toàn miễn phí. Nếu bạn so sánh các tính năng của PostgreSQL với Sql-Server Ultimate Enterprise Edition, bạn cũng sẽ phải so sánh chi phí với phiên bản doanh nghiệp cuối cùng (và trong 99% trường hợp, bạn sẽ thấy nó không đáng giá) .


2. Nó đã sẵn sàng cho giờ vàng chưa?
Có thực sự Skype và WhatsApp chạy cơ sở dữ liệu của nó trên PostgreSQL.
Bạn sẽ thấy nó có một số vấn đề (thông báo lỗi xấu - kết nối bị ngắt kết nối) khi bạn cố gắng chạy tập lệnh chèn hơn 50 MB, nhưng SSMS của Microsoft bị lỗi rất lâu trước số lượng đó.

Summa summarum, PG có lẽ đã sẵn sàng cho PrimeTime hơn là SQL-Server.
- PG đã có tính năng phân trang gần 10 năm nay (MySQL cũng như cú pháp SQL-Standard), máy chủ SQL chỉ có tính năng đó với SQL-2012, chỉ tuân theo tiêu chuẩn.

  • Bạn chỉ cần xcopy triển khai PostgreSQL, hoạt động hoàn hảo mà không cần quyền quản trị viên

  • PG có hỗ trợ XML, giống như SQL-Server

  • PG có hỗ trợ JSON, SQL Server không? Tôi tin rằng họ vẫn đang đầu tư đầy đủ khi nghĩ rằng XML là tương lai - và cố ý làm tê liệt web như một nền tảng. (họ hiện đang thêm hỗ trợ JSON cho SQL-Server 2016 CTP, nhưng nó lưu trữ dữ liệu dưới dạng nvarchar, vì vậy bạn sẽ không thể đặt các chỉ mục (fulltext) trên các trường JSON cụ thể như bạn có thể làm trên PostgreSQL)

  • PG có hỗ trợ HSTORE (cột mảng kết hợp), SQL-Server thì không

  • PG có các cột mảng. Mảng là một phần cốt lõi của lập trình, ngoại trừ trong SQL Server, nơi chúng không tồn tại (hãy thử tham số hóa mệnh đề IN) ...

  • PG đã có hỗ trợ không gian trong một thời gian dài, hỗ trợ không gian của SQL-Server tương đối mới và dựa trên các phần mở rộng .NET và hướng đối tượng (xin chào RELATIONAL database?)

  • PG có khả năng tìm kiếm toàn văn bản tốt hơn và nhanh hơn (ý kiến ​​cá nhân, không được sao lưu bởi dữ liệu vì rõ ràng là Google-Chrome nhanh hơn IE 8)

  • PG có các công ty cung cấp hỗ trợ thương mại, giống như Microsoft làm cho SQL-Server; lợi thế là bạn thực sự được sửa lỗi / yêu cầu tính năng để lấy tiền nhờ hỗ trợ PG. Bạn có thể biết hỗ trợ của Microsoft, vì vậy tôi sẽ dành cho bạn bất kỳ lời chê bai nào về tôi ...

  • PG có hỗ trợ IPv6 không, Microsoft?

  • PG hoạt động bình thường khi tải nặng, với SQL-Server trên Windows, chúng tôi đã có một số vấn đề lạ xuất hiện và biến mất ngẫu nhiên (Heisenbugs?).

  • SQL Server cho đến ngày nay vẫn triển khai đồng thời bi quan ra khỏi hộp, PG thì không

  • Nén ra khỏi hộp. Trong SQL Server, nén là một tính năng "Enterprise Edition +" có nghĩa là bạn đang chi tiêu ít nhất 1 nhà phát triển để có được khả năng sử dụng tính năng nén. Một khi bạn đã trả tiền cho khả năng đó, bạn vẫn phải tìm cách thực hiện nó. Postgres thực hiện điều này giúp bạn một cách tự động và miễn phí.

  • Tạo chỉ mục đồng thời. Đây là một tính năng khác mà SQL Server có thể thực hiện, nhưng chỉ khi bạn có đủ khả năng mua phiên bản Enterprise. Postgres hỗ trợ bạn điều này và bạn có thể để ví ở nhà.

  • Các chức năng có thể lập chỉ mục - khả năng phân tích. Trong Postgres, bạn thực sự có thể lập chỉ mục các chức năng nhất định và duy trì khả năng phân loại. Với SQL Server, BOOM - quét bảng - hiệu suất adios

  • PG sử dụng Unicode (UTF8) theo mặc định. Người tiền nhiệm không đủ năng lực có thể làm tê liệt toàn bộ ứng dụng với varchar khủng khiếp và thiếu N 'cho kiểu dữ liệu chuỗi như họ làm trong SQL Server. Mặc dù vậy, cú pháp N 'vẫn hoạt động, vì vậy không có vấn đề tương thích nếu bạn sử dụng chúng.

  • PG hỗ trợ xóa theo tầng đệ quy , máy chủ SQL hoàn toàn không hỗ trợ điều đó (mặc dù nó chủ động cho bạn biết khi nào bạn muốn đặt tầng vào ràng buộc tham chiếu)

  • PG hỗ trợ TUYỆT VỜI NHẤT (giá trị [, ...]), ÍT NHẤT (giá trị [, ...])
    Microsoft: CASE WHEN HugeExp1 > HugeExp2 THEN HugeExp1 ELSE HugeExp2 END)...
    CASE WHEN N > 2 THEN 'ROYALLY SCREWED'...
    hoặc đá quý rất dễ bảo trì này
    SELECT ( SELECT MIN(Price) FROM ( VALUES (123),(456) ) AS AllPrices(Price) )

  • PG hỗ trợ tệp UTF-8 CSV kể từ đó, máy chủ SQL không hỗ trợ tệp UTF-8 CSV trước SQL-Server 2014 SP2 (hãy thử nhập cơ sở dữ liệu MaxMind GeoIP - bạn cần viết chương trình của riêng mình cho SQL-server ... ).



Hạn chế của PG:

  • Phiên bản Windows không ổn định và nhanh bằng phiên bản Linux

  • Không có công cụ BI miễn phí như SQL-Server-Reporting-Services (ok có Eclipse BIRT, nhưng nó chạy trên JAVA).
    Mặt khác, chỉ với một ít tiền, bạn có thể nhận được các báo cáo của phần mềm kích thích, có nhiều định dạng xuất hơn SSRS và thực sự hiển thị tốt trong các trình duyệt khác ngoài IE cũng như IE> 8, không giống như SSRS (2005 - 2012 cho đến nay, và cho đến nay tôi đọc SSRS 2014 không khác gì 2012).

Điều đó nói rằng, nếu vấn đề duy nhất của bạn là tìm kiếm toàn văn bản với SQL-Server Express, bạn nên xem qua Lucene.NET (Giấy phép Apache).

Ngoài ra, hãy cẩn thận nếu bạn đang nghĩ đến việc sử dụng SQL-Express trong sản xuất:

Cho đến nay, chúng tôi chỉ xem xét một vài hạn chế rõ ràng nhất, nhưng mấu chốt là điều tưởng như một ý tưởng tuyệt vời được thúc đẩy bởi suy nghĩ tiết kiệm chi phí đáng kể lại có thể trở thành một thảm họa tuyệt đối cho doanh nghiệp của bạn. Tệ hơn nữa, bất kỳ khoản tiết kiệm chi phí ban đầu nào bạn có được từ việc sử dụng một sản phẩm miễn phí có thể dễ dàng bị phủ nhận bởi chi phí khắc phục thảm họa và thiệt hại cho danh tiếng doanh nghiệp của bạn trong khi cơ sở dữ liệu quan trọng bị hỏng. Vì vậy, không cần phải nói, mặc dù sự hấp dẫn của thẻ giá 0 đô la của nó, SQL Server Express chắc chắn không phải là giải pháp cơ sở dữ liệu phù hợp để cung cấp sức mạnh cho doanh nghiệp của bạn.

Nguồn: bitwizards.com

29 hữu ích 5 bình luận chia sẻ
4

Từ kinh nghiệm cá nhân của riêng tôi, tôi thấy rằng PostgreSQL chạy tốt hơn trên hộp linux - mất hệ điều hành windows. Tôi không quen thuộc lắm với SQL Server, nhưng tôi không gặp vấn đề gì về tốc độ hoặc tính linh hoạt khi làm việc với Postgres. Mặc dù tôi không thể nói chuyện với ADO.NET, nhưng tôi đã có nhiều thành công với việc sử dụng Postgres trong thế giới thực (dưới tải liên tục). Trong trường hợp của bạn, biến duy nhất tôi có thể thấy là tích hợp với ADO.NET. http://www.devart.com/dotconnect/postgresql/ có thể là một điểm khởi đầu.

4 hữu ích 0 bình luận chia sẻ
4

Như một số đề cập ở trên, điều này thực sự phụ thuộc vào việc DB của bạn sẽ phải lớn như thế nào.

Đặc biệt là sự chênh lệch giá của một lõi CPU so với giá của giấy phép cho lõi đó thực sự rất lớn. CPU không tốn kém gì trong sự so sánh này. Vì vậy, nếu bạn cần 16+ Core, tôi sẽ cho Postgres một cơ hội. bạn sẽ có thể mua thêm rất nhiều lõi cho máy chủ Postgres của mình với số tiền tiết kiệm được.

Tôi là nhà phát triển Phần mềm và các khách hàng của chúng tôi có, phải trả nhiều tiền hơn cho Giấy phép Máy chủ Sql so với tất cả những thứ khác cùng nhau: phát triển phần mềm, Phần mềm khách hàng, Phần mềm máy chủ, Quản trị cơ sở dữ liệu, v.v.

Hầu hết thời gian, nó rẻ hơn để mua phần cứng mới, hơn là để tối ưu hóa mã của bạn. Nhưng điều đó không đúng với CPU SQL Server.

(tuy nhiên, bạn vẫn có thể đầu tư vào Ram / HDD mà không tăng chi phí bản quyền)

4 hữu ích 1 bình luận chia sẻ
3

Tôi chưa thử sử dụng PostgreSQL với ADO.NET, nhưng theo kinh nghiệm của tôi khi sử dụng nó với MySQL, bạn có thể tốt hơn nên gắn bó với SQL Server nếu định sử dụng LINQ to SQL hoặc Entity Framework.

Mặc dù có thể có các thư viện của bên thứ ba sẽ cho phép bạn tích hợp các công nghệ đó với PostreSQL, nhưng tôi nghĩ bạn sẽ thấy rằng mọi thứ sẽ suôn sẻ hơn rất nhiều với SQL Server. Khá nhiều công cụ tuyệt vời được tích hợp trong Visual Studio làm cho những công nghệ đó trở nên dễ sử dụng sẽ chỉ hoạt động với SQL Server.

3 hữu ích 3 bình luận chia sẻ
loading
Không tìm thấy câu trả lời bạn tìm kiếm? Duyệt qua các câu hỏi được gắn thẻ sql sql server postgresql , hoặc hỏi câu hỏi của bạn.

Có thể bạn quan tâm

loading