Tôi là một DBA trên Oracle và SQL Server.
Sự nhầm lẫn này là do sự không phù hợp về ngữ nghĩa và một cấp độ bổ sung trong hệ thống phân cấp của SQL Server nhưng còn hơn thế nữa!
Lưu ý rằng chúng ta sẽ chỉ nói về cơ sở dữ liệu cá thể trong cả hai trường hợp (ý định chơi chữ).
Trường hợp
Trong Oracle, một cá thể sẽ có một lượng bộ nhớ được phân bổ cho nó (SGA / PGA) và các quá trình được sinh ra (smon, pmon dw0X, v.v.). Có các chế độ xem hệ thống để giám sát tất cả nội dung sẽ được tạo và sử dụng (V $ và dba_ lượt xem).
Đây là cấu trúc mà chúng ta quen thuộc trong nhà tiên tri.
Và bạn đã đề cập đến nó, cơ sở dữ liệu là nơi chứa các tệp vật lý. Thông thường di chuyển đến RAC làm cho sự khác biệt rõ ràng.
Trong SQL Server, cá thể hoạt động theo cùng một cách: Một loạt bộ nhớ được phân bổ và có các khung nhìn hệ thống (sys.) Để giám sát tất cả những thứ đó.
Ví dụ có 4 cơ sở dữ liệu hệ thống:
- hệ thống trong đó các hệ thống xem.
- cơ sở dữ liệu msdb cũng chứa thông tin liên quan đến hệ thống. Thông thường đó là nơi bạn sẽ tìm thấy dữ liệu liên quan đến bản sao lưu của mình. Một chút bảo trì được yêu cầu trên đó ít nhất là để xóa các bản ghi sao lưu cũ.
- mô hình, cơ sở dữ liệu được đặt tên khéo léo được sử dụng làm mô hình cho mọi cơ sở dữ liệu mới mà bạn sẽ tạo. Đó là một ý tưởng tốt để sửa đổi cài đặt tệp dữ liệu (tự động mở rộng, kích thước ban đầu, chế độ sao lưu) để tất cả cơ sở dữ liệu mới được hưởng lợi từ nó.
- tempdb được phát triển dưới đây.
Cơ sở dữ liệu hệ thống chứa thông tin dữ liệu meta cho mọi cơ sở dữ liệu khác trên SQL Server.
Không gian tạm thời
Trong Oracle:
Không gian bảng tạm thời (tạo không gian bảng tạm thời). Trong orory, không gian bảng tạm thời là vùng tràn cho các hoạt động không thể phù hợp với PGA (bộ nhớ xử lý, mặc định là 200M (tối đa 11g), ví dụ tham gia băm của bạn nếu tràn hơn 200M trong không gian bảng tạm thời, nói chung đó là nguyên nhân truy vấn thực hiện chậm).
Trong SQL Server, có một cơ sở dữ liệu tempdb nằm trong phần "cơ sở dữ liệu hệ thống" và nó được sử dụng rất tích cực, nhiều hơn so với trong nhà tiên tri. Đặt nó trên các đĩa rất nhanh (SSD hoặc sợi đến với tâm trí)
Do đó, sự khác biệt lớn thứ 2:
Các đối tượng
Trong máy chủ SQL:
Các đối tượng (bảng, khung nhìn), không bị ràng buộc với người dùng như trong nhà tiên tri, mà là "cơ sở dữ liệu". "Cơ sở dữ liệu" giữ (không sở hữu), các đối tượng. Tại thời điểm tạo cơ sở dữ liệu, một tệp dữ liệu được đề cập để lưu trữ các đối tượng này.
Trong lời tiên tri:
Một người dùng tạo các đối tượng sẽ hạ cánh trong một lược đồ cùng tên. Đặt tên người dùng cẩn thận trở nên quan trọng.
Và đây là sự khác biệt lớn thứ 3:
Bảo vệ
Trong lời tiên tri:
Người dùng sẽ được tạo và họ sẽ được trao quyền ít nhất là tạo phiên để họ có thể truy cập các đối tượng mà họ đã được phép. Hoặc, họ sẽ có quyền tạo các đối tượng trong lược đồ riêng (vai trò tài nguyên), sau đó sẽ tạo một lược đồ trong tên đó.
Bạn có thể chọn và đó là một cách thực hành tốt, để tạo một không gian bảng và biến nó thành mặc định cho mỗi người dùng có thể tạo các đối tượng. Nếu điều đó không được thực hiện, một không gian bảng mặc định sẽ được sử dụng, thường là "USER_DATA".
Trong máy chủ SQL:
Vì các đối tượng không được sở hữu bởi một người dùng cụ thể trong một lược đồ, trước tiên người dùng phải được tạo, sau đó đặc quyền được gán. Thông thường, bất cứ ai sẽ là người dùng chính thực hiện việc tạo đối tượng sẽ được cấp vai trò "chủ sở hữu" trên cơ sở dữ liệu nhất định.
Người dùng đó trong SQL Server sẽ tương đương với lời tiên tri của chủ sở hữu lược đồ nhưng có thể có nhiều hơn một chủ sở hữu.
Bảo mật là nơi SQL Server tỏa sáng trên Oracle: Bảo mật SQL Server có thể được gắn với Active Directory để quản lý người dùng máy tính để bàn. Những người dùng máy tính để bàn này có thể được gắn với một nhóm người dùng nói "chỉ đọc". Có thể thêm nhóm thư mục hoạt động đó vào SQL Server và cấp cho nó quyền truy cập "chỉ đọc" vào cơ sở dữ liệu của bạn.
Khi người dùng rời khỏi công ty của bạn, Quản trị viên Active Directory sẽ xóa người dùng đó và quyền truy cập vào cơ sở dữ liệu cũng bị mất.
Oracle có thể sử dụng LDAP nhưng hãy đối mặt, nó không thường xuyên bị ràng buộc với người dùng máy tính để bàn windows.
Sự khác biệt lớn thứ 4.
Ngữ nghĩa
SQL Server có thêm một lớp. Trong cơ sở dữ liệu SQL Server, các đối tượng có thể được tổ chức trong các lược đồ. Các lược đồ có thể có chủ sở hữu quá. Nó cũng giới thiệu bảo mật hạt tốt hơn nhưng trong khi nó được sử dụng, nó không phổ biến. Tôi muốn nói rằng cũng nên thực hành tốt để nhóm các đối tượng của bạn theo lược đồ ngay từ giai đoạn phát triển để hưởng lợi sau này từ các khả năng bảo mật bổ sung khi cần.
Nhật ký / Nhật ký lưu trữ
Cuối cùng các bản ghi lưu trữ hoạt động khác nhau trong oracle và SQL Server. SQL Server có một tệp nhật ký được tạo cho mỗi cơ sở dữ liệu, trong khi oracle có chế độ nhật ký lưu trữ được bật ở cấp thể hiện.
Đây là nơi dòng làm mờ. Đối với một số khía cạnh, cơ sở dữ liệu của SQL Server thực sự là cơ sở dữ liệu. Trong các trường hợp khác, chúng trông giống như lược đồ.
Lưu trữ trong máy chủ SQL được đặt với chế độ sao lưu tùy chọn được đặt thành đầy đủ. Sau đó, chúng được lưu trữ bằng cách thực hiện sao lưu nhật ký. Sao lưu nhật ký sẽ yêu cầu sao lưu toàn bộ diễn ra trước khi nó bắt đầu hoạt động.
Trong Oracle, các bản ghi lưu trữ được lưu trữ tự động, sau đó chúng tôi sao lưu chúng vào một vị trí từ xa.
Tóm lược
Oracle:
Instance->User1->Schema1(named User1)->Tablespace1
->Tablespace2
->User2->Schema2(named User2)->Tablespace3
->User3->Granted "read only"->schema2.table1
Máy chủ SQL:
Instance->Database1->Schema1
->Database2->Schema2
->User1
->User2
->User1->Granted "owner"->Database1
->User2->Granted "read only"->Database2->Schema2
Đây là những điều mà tôi nghĩ đến khi so sánh cả hai. Tôi rất thích nghe thêm từ những người khác và thêm vào / sửa câu trả lời này.
Ngoài ra tôi không có một sở thích cụ thể cho một trong hai. Tôi nghĩ cả hai đều làm rất tốt và tôi rất thích làm việc với cả hai.