Содержание
- 2. Содержание CacheStorage Обзор стратегий хранения CacheSQLStorage CustomStorage Пример CacheSQLStorage
- 3. Сравнение стратегий хранений ✓ Обеспечивается Caché ? Реализуется разработчиком
- 4. CacheStorage идеально подходит для новых приложений CacheSQLStorage применяется, когда с существующими глобалами можно и нужно работать
- 5. Содержание CacheStorage Обзор стратегий хранения CacheSQLStorage CustomStorage Пример CacheSQLStorage
- 6. Обзор CacheStorage Объектное API Приложение %LoadData %SaveData %DeleteData ObjectScript ObjectScript ObjectScript Объектная реализация Глобалы
- 7. CacheStorage генерирует глобалы, в которых используется $ListBuild Уникальный идентификатор (IDKey / PrimaryKey) может автоматически сгенерирован Cache
- 8. Содержание CacheStorage Обзор стратегий хранения CacheSQLStorage CustomStorage Пример CacheSQLStorage
- 9. Обзор CacheSQLStorage Объектное API Приложение %LoadData %SaveData %DeleteData SELECT INSERT / UPDATE DELETE SQL Реализация Глобалы
- 10. Создайте Persistent-класс Добавьте свойства в класс Определите свойство (свойства), которое будет идентификатором класса (IDKey / Primary
- 11. При работе через объекты будут вызываться триггеры (при использовании CacheStorage они не вызываются)! Поддерживается ссылка и
- 12. CacheSQLStorage обычно создается: Программистом Программой конвертации из F-DBMS Программой конвертации из KB-SQL Создание CacheSQLStorage
- 13. Не ко всем структурам глобалов можно настроить CacheSQLStorage так чтобы обеспечить полный SQL-доступ (Read/Write/Delete) Некоторые структуры
- 14. Различают следующие виды CacheSQLStorage карт: Данные (MasterMap): Должны быть определены все поля Индексы: Должны быть определены
- 15. IDKey индексы определяют уникальные идентификаторы для объектов Primary Key индексы определяют уникальные идентификаторы для SQL IDKey
- 16. Индексы (subscripts) карт обычно эквивалентны индексам глобалов Индексы карт используется для формирования кода, перебирающего записи таблицы.
- 17. Существует тесная связь между IDKey и RowID для карт данных, но не для карт индексов A
- 18. Когда определены индексы глобала, нужно определить хранение свойств класса в глобале Можно определить дополнительные узлы индекса
- 19. Map Name: Имя карты. Map Type: Данные или Индексы (Data or Index) Global Name: Имя глобала
- 20. Access Type: Тип доступа. Sub, Piece, Global или Other Delimiter: Разделитель. Используется, если тип доступа Piece
- 21. RowID: Позиция поля в спецификации RowID Field: Имя поля, состовляющего часть RowID Expression: Уровень внутри определения
- 22. Field: Имя поля Node: Дополнительный индекс глобала (только литерал), где находится поле Piece: Позиция в строке
- 23. Содержание CacheStorage Обзор стратегий хранения CacheSQLStorage CustomStorage Пример CacheSQLStorage
- 24. Обзор CustomStorage Объектные API Прилжение %LoadData %SaveData %DeleteData ? ? ? Собственная реализация Глобалы
- 25. Создайте Persistent-класс Добавьте свойства в класс Определите свойство (свойства), которое будет идентификатором класса (IDKey / Primary
- 26. Для того чтобы использовать SQL с CustomStorage, необходимо определить специальный параметр класса: Parameter SQLENABLED = 1;
- 27. Для того чтобы использовать объекты с CustomStorage, необходимо выполнить следующее: Реализовать %LoadData, %SaveData, %DeleteData В Вашем
- 28. Код, реализованный в %LoadData(), будет выполняться каждый раз, когда загружается объект, обычно после вызова %Open() и
- 29. Код, реализованный в %SaveData(), будет выполняться каждый раз, когда сохраняется объект, в результате вызова метода %Save()
- 30. Код, реализованный в %DeleteData, будет выполняться каждый раз, когда объект будет удаляться, в результате вызова %Delete()
- 31. Содержание CacheStorage Обзор стратегий хранения CacheSQLStorage CustomStorage Пример CacheSQLStorage
- 32. Phone Numbers Doctor Visits Пример модели данных Есть два отношения Parent-Children: Пациент может иметь несколько номеров
- 33. ^P(SSN) = “Name^DOB^Phone1~Phone2~...~PhoneN^Company” ^P(SSN,“Address”) = “City^PostalCode^Country” ^P(SSN,“Visits”,VisitDate,VisitTime) = “Symptom^Payment” Пример структуры данных глобала ^P(“211-22-1222”) = “Smith,John^39873^718-317-3312~917-225-2213^AT&T”
- 34. ^PI(Name,SSN) = “” Пример структуры индексов глобала ^PI(“Smith,John”,“211-22-1222”) = “”
- 35. Создаем Persistent-класс
- 36. Добавляем свойства
- 37. Выбираем уникальный идентификатор Базируется на одном поле: SSN
- 38. Определяем ID / Primary Key индекс Основан на свойстве SSN Не изменяйте collation индекса
- 39. Создаем Storage
- 40. Создаем карту данных Имя карты не может содержать символ «пробел»
- 41. Определяем индексы глобала Первый уровень индекса глобала - SSN
- 42. Определяем Row ID Первый Row ID 1 основан на SSN, которое хранится в первом уровне индекса
- 43. Определяем свойства Введите разделитель и дополнительную информацию
- 44. Срздаем карту индексов Выберите тип заполнения ‘full’
- 45. Определяем индексы глобала индексов
- 46. Определяем Row ID индекса Первый Row ID основан на SSN, который хранится в уровне 2 индекса
- 47. Сохраняем и компилируем класс
- 48. Создаем дочернюю таблицу PhoneList Этот класс тоже Persistent
- 49. Создаем отношение Parent-Child Отношения (Relationship) – специальный класс свойств Кроме определения свойства в этом классе (PatientRef),
- 50. Добавляем остальные свойства Кроме свойства, Вы должны определить свойство для представления позиции во встроенной разделенной (Counter)
- 51. Выбираем уникальный идентификатор Наш идентификатор будет строится на поле Counter
- 52. Определяем индекс ID / Primary Key Задайте индекс по свойству Counter Не модифицируйте collation Свойство PatientRef
- 53. Создаем Storage
- 54. Создаем карту данных Имя карты не может содержать символ «пробел»
- 55. Определяем индексы глобала Первый уровень индекса глобала основан на Training.Patient.SSN Второй уровень индекса глобала основан на
- 56. Определяем Row ID Row ID 1 основан на Training.Patient.SSN, которое хранится на первом уровне индекса глобала
- 57. Определяем свойства Внесите только свойство HomePhone
- 58. Сохраняем и компилируем класс
- 59. Создаем дочернюю таблицу Visit Этот класс тоже Persistent
- 60. Создаем отношение Parent-Child Кроме определения свойства в этом классе (PatientRef), Вы должны определить другую сторону отношения
- 61. Добавляем остальные свойства
- 62. Выбираем уникальный идентификатор В этот раз идентификатор будет строиться по 2 полям: VisitDate и VisitTime
- 63. Определяем индекс ID / Primary Key Постройте индекс по свойствам VisitDate и VisitTime Не изменяйте collation
- 64. Создаем Storage
- 65. Создаем карту данных Имя карты не может содержать символ «пробел»
- 66. Определяем индексы глобала Первый уровень индекса глобала основан на Training.Patient.SSN Второй уровень индекса глобала основан на
- 67. Определяем Row ID Row ID 1 основан на свойстве Training.Patient.SSN, которое хранится на первом уровне индекса
- 68. Определяем свойства
- 69. Сохраняем и компилируем класс
- 71. Скачать презентацию