Datasnap будет подходить максимум для 8 взаимных непониманий интенсивная двунаправленная многопользовательская игра?

Вот список различий. Я выделил Oracle-specific features, и надо надеяться сообщество может добавить в конкретных различиях других поставщиков также. Различия, которые характерны для большинства поставщиков, могут пойти непосредственно ниже заголовков с различиями, выделенными ниже.

Общий обзор

, Если Вы хотите быстро удалить все строки от таблицы, и Вы действительно уверены, что хотите сделать это, и у Вас нет внешних ключей против таблиц, тогда УСЕЧЕННОЕ, вероятно, будет быстрее, чем УДАЛЕНИЕ.

Различные системные конкретные вопросы нужно рассмотреть, как детализировано ниже.

тип

Оператора Удаляет, DML, Усеченный DDL (, Что такое DDL и DML? )

Фиксация и Откат

Переменная поставщиком

Усеченный SQL*Server

может откатываться.

Усеченный PostgreSQL

может откатываться.

Oracle

, поскольку УСЕЧЕННЫМ является DDL, это включает две фиксации, один прежде и один после выполнения оператора. Усеченный не может поэтому откатываться, и отказ в усеченном процессе выпустит фиксацию так или иначе.

Однако посмотрите Ретроспективный кадр ниже.

восстановление Пространства

Удаляет, не восстанавливает пространство, Усеченный восстанавливает пространство

Oracle

, Если Вы используете пункт УСТРОЙСТВА ХРАНЕНИЯ ДАННЫХ ПОВТОРНОГО ИСПОЛЬЗОВАНИЯ тогда, сегменты данных не освобождены, который может быть незначительно более эффективным, если таблица должна быть перезагружена с данными. Метка паводка сбрасывается.

объем строки

Удаляет, может использоваться для удаления всех строк или только подмножества строк. Усеченный удаляет все строки.

Oracle

, Когда таблица делится, отдельные разделы, может быть усеченным в изоляции, таким образом частичное удаление данных всей таблицы возможно.

Типы объектов

Удаляют, может быть применен к таблицам и таблицам в кластере. Усеченный применяется только к таблицам или всему кластеру. (Может быть конкретная Oracle)

Идентификационные данные Объекта данных

, Oracle

Удаляет, не влияет на идентификатор объекта данных, но усеченный присваивает новый идентификатор объекта данных если никогда не было вставки против таблицы начиная с ее создания Даже единственная вставка, которая откатывается, заставит новый идентификатор объекта данных быть присвоенным после усечения.

Ретроспективный кадр (Oracle)

, который удаляют работы Ретроспективного кадра через, но усеченное предотвращает ретроспективный кадр к состояниям до операции.

Однако от 11gR2 функция FLASHBACK ARCHIVE позволяет это, кроме Использования Express Edition

РЕТРОСПЕКТИВНОГО КАДРА в Oracle http://docs.oracle.com/cd/E11882_01/appdev.112/e41502/adfns_flashback.htm#ADFNS638

Полномочия

Переменная

, Oracle

Удаляет, может быть предоставлен на таблице другому пользователю, или роль, но усеченный не может быть, не используя ОТБРАСЫВАНИЕ НИКАКОЕ предоставление ТАБЛИЦЫ.

Восстановление/Отмена

Удаляет, генерирует небольшое количество восстановления и большую сумму отмены. Усеченный генерирует незначительную сумму каждого.

Индексы

Oracle

А усеченная операция представляет неприменимые индексы, применимые снова. Удалите не делает.

Внешние ключи

усеченный А не может быть применен, когда включенный внешний ключ ссылается на таблицу. Обработка с удаляет, зависит от конфигурации внешних ключей.

Таблица, Блокирующая

, Усеченный Oracle

требует эксклюзивной блокировки таблицы, удалите, требует общей блокировки таблицы. Следовательно отключение блокировок таблицы является способом предотвратить усеченные операции на таблице.

Триггеры

триггеры DML не стреляют в усеченное.

триггеры Oracle

DDL доступны.

Удаленное Выполнение

Усеченный Oracle

не может быть выпущен по ссылке базы данных.

Столбцы Идентификационных данных

SQL*Server

Усеченный сброс последовательность для типов столбца ИДЕНТИФИКАЦИОННЫХ ДАННЫХ, удалите, не делает.

Набор результатов

В большинстве реализаций, DELETE оператор может возвратить клиенту строки, которые были удалены.

, например, в Oracle МН подпрограмма / подпрограмма SQL Вы могли:

DELETE FROM employees_temp
WHERE       employee_id = 299 
RETURNING   first_name,
            last_name
INTO        emp_first_name,
            emp_last_name;

7
задан Mohammed Nasman 3 December 2009 в 20:35
поделиться

3 ответа

DataSnap может делать все, что вы перечислили выше:

  1. DataSnap написан на Delphi.
  2. Он может подключаться через HTTP через любое соединение, локальное, сетевое или удаленное.
  3. Он будет работать через HTTP, включая поддержку туннелирования HTTP-соединения.
  4. Вы можете фильтровать поток данных по своему усмотрению. Изделие включает компрессионный фильтр. Даниэле Тети написал несколько очень хороших фильтров шифрования .
  5. Вы можете отправлять команды на сервер, вызывая методы сервера.
  6. Вы можете получать ответ от сервера через обратные вызовы сервера
  7. Вы можете легко подключить восемь человек к серверу
  8. Вы можете передавать объекты JSON. Это тип по умолчанию, передаваемый между клиентом и сервером.

Итак, чтобы ответить на ваш вопрос, да, я думаю, что в вашем сценарии можно использовать новый Delphi 2010 DataSnap.

10
ответ дан 6 December 2019 в 15:23
поделиться

Как сказал Ник, ответ - да.

Боб Сварт написал технический документ и выпустил несколько видеороликов об обновленном DataSnap в Delphi 2010 , которые могут помочь вам началось.

3
ответ дан 6 December 2019 в 15:23
поделиться

Если ваша многопользовательская игра не отправляет много данных, HTTP и Datasnap могут работать. Если вам нужна быстрая связь, я бы использовал UDP и собственный двоичный протокол. Если вам не нужно обходить корпоративный брандмауэр, который останавливает практически любой протокол, кроме HTTP - а компании обычно не любят людей, играющих в свое рабочее время - брандмауэр блокирует входящее соединение, а не исходящее. Только серверу нужны открытые порты, чтобы клиенты могли подключаться. И я бы также избегал JSON - если вам не нужна совместимость, двоичная сериализация выполняется намного быстрее.

1
ответ дан 6 December 2019 в 15:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: