Загальні відомості про програмування ole db
Універсальний доступ до даних надає простий спосіб доступу до даних, що не залежить від способу їх зберігання. Зазвичай величезну кількість даних підприємства зберігається за межами корпоративних баз даних. Дані знаходяться в файлових системах (наприклад, FAT або NTFS), індексного-послідовних файлах, особистих базах даних (наприклад, Access), електронних таблицях (наприклад, Excel), додатках для планування проектів (наприклад, Project) та електронною поштою (наприклад, Outlook).
Доступ до цих даних за допомогою різних додатків представляє основну проблему в технологічному процесі або принаймні викликає роздратування. Більшість компаній, що потрапили в цю ситуацію, вирішують цю проблему шляхом об'єднання даних в систему управління базами даних (СКБД). Однак це рішення є дорогим, вимагає багато часу і в більшості випадків не зручно.
Альтернативним варіантом є створення рішення для універсального доступу до даних. OLE DB і ADO надають можливості універсального доступу до даних. Технологія OLE DB є більш продуктивною і рекомендується для використання з додатками Visual C ++.
Універсальний доступ до даних містить дві можливості: перша полягає в використанні розподіленого запиту або уніфікованого доступу до декількох джерел даних (розподіленим), а друга полягає в тому, що можна зробити джерела даних, які не є СУБД, доступними для додатків баз даних.
Можливість уніфікованого доступу до даних декількох джерел даних (тобто розподілених). Джерела даних можуть бути одного типу (наприклад, окремі бази даних Access) або різних типів (наприклад, база даних SQL Server і база даних Access). Уніфікований доступ означає, що можна запустити один і той же запит на всіх джерелах даних.
Доступ до джерел даних, які не є СУБД
Можливість зробити джерела даних, які не є СУБД, доступними для додатків бази даних. Як приклади джерел даних, що відносяться до СУБД, можна привести IMS, DB2, Oracle, SQL Server, Access і Paradox. Прикладами джерел даних, що не відносяться до СУБД, є дані в файлових системах, електронній пошті, електронних таблицях і засобах управління проектами.
Розглянемо наступну ситуацію: відділу продажів потрібно знайти всі повідомлення електронної пошти, отримані протягом одного тижня від замовників з певної області. Для виконання даного запиту може знадобитися пошук по файлу поштової скриньки програми електронної пошти і пошук по таблиці Access замовників по заданому імені замовника. Access є додатком СУБД, а Outlook немає.
OLE DB дозволяє розробляти додатки, які отримують доступ до даних з різних джерел, незалежно від того, чи є джерело даних СУБД чи ні. OLE DB робить універсальний доступ можливим за допомогою інтерфейсів COM, які підтримують відповідну функціональність СУБД для вибраного джерела даних. COM скорочує зайве дублювання послуг і максимізує функціональну сумісність не тільки серед джерел даних, а й також серед інших додатків.
На цьому етапі виникає модель COM. OLE DB - це набір інтерфейсів COM. Отримуючи доступ до даних через уніфікований набір інтерфейсів, можна зробити з бази даних матрицю взаємодіючих компонентів.
Грунтуючись на специфікації COM, OLE DB визначає расширяемую і керовану колекцію інтерфейсів, яка множить і інкапсулює сумісні і повторно використовувані функціональні можливості СУБД. Дані інтерфейси визначають межі компонентів СУБД, такі як контейнери рядків, обробники запитів і координатори транзакцій, які дозволяють уніфікувати транзакційний доступ до різних джерел даних.
Зазвичай додатки OLE DB створюються як бібліотеки DLL, але реалізація COM долає недоліки бібліотек DLL (іменування і проблеми сумісності версій) шляхом використання коду, розділеного на компоненти. В OLE DB виклик інтерфейсів або доступ до інших компонентів здійснюється за допомогою їх глобальних унікальних ідентифікаторів (GUID).
І нарешті, COM стежить за компонентом за допомогою підрахунку посилань. При виклику методу інтерфейсу лічильник посилань збільшується, а при поверненні методу лічильник посилань зменшується. Якщо лічильник дорівнює нулю, компонент, до якого належить метод, звільняється.