Межплатформенный и язык (de) сериализация

Я думаю, что Вы подразумеваете, что различие между УДАЛЯЕТ ТАБЛИЦУ и TRUNCATE TABLE.

DROP TABLE

удаляют таблицу из базы данных.

УДАЛЯЮТ ТАБЛИЦУ

без условия, удаляют все строки. Если будет триггер и ссылки тогда, то это обработает для каждой строки. Также индекс будет, изменяют если там один.

TRUNCATE TABLE

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

11
задан fwgx 14 September 2009 в 13:57
поделиться

5 ответов

I'm surprised Jon Skeet hasn't already pounced on this one :-)

Protocol Buffers is pretty much designed for this sort of scenario -- passing structured data cross-language.

That said, if you're using a database the way you suggest, you really shouldn't be using a full-strength RDBMS like Oracle or SQL Server but rather a lightweight key-value store such as Berkeley DB or one of the many "cloud table" engines.

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

Если я хочу по-настоящему кросс-язык, я обычно предлагаю JSON, поскольку простота поддержки javascript и обилие библиотек , а также удобочитаемость и модифицируемый (я предпочитаю его XML, поскольку считаю, что он меньше по размеру символов, быстрее и удобнее для чтения). Однако это не самый эффективный с точки зрения пространства, и более машиночитаемый формат, такой как буферы протокола или экономия , будет иметь здесь преимущества (экономию можно сделать из IDL, но она также предназначен для служб кодирования, поэтому он может быть тяжелее, чем вы хотите).

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

Почему вы не выбрали XML, поскольку это полностью соответствует вашим требованиям. И C ++, и Java допускают простую реализацию.

Кроме того, я сомневаюсь в вашей идее хранить все в виде большого двоичного объекта в базе данных, использовать реляционную базу данных, для которой предназначена база данных, или переключиться на какую-либо объектно-ориентированную базу данных, например http://www.versant.com/en_US/products/objectdatabase , который поддерживает как Java, так и C ++.

1
ответ дан 3 December 2019 в 05:58
поделиться

Вам нужен ASN.1 ! (Некоторые люди называют это двоичным XML.) ASN.1 очень компактен и поэтому идеально подходит для передачи данных между двумя системами. И для тех, кто не думает, что это когда-либо использовалось: несколько Интернет-протоколов основаны на модели ASN.1 для сериализации данных!

К сожалению, не так много доступных библиотек для Java или C ++, которые будут поддерживать ASN.1. . Мне приходилось работать с ним несколько лет назад, и я просто не мог найти хорошего, бесплатного или недорогого инструмента для поддержки ASN.1 в C ++. В Objective Systems продаются решения ASN.1 / XML, но это очень дорого. (Компилятор ASN.1 для C ++ и Java, то есть!) Это стоит вам как минимум руки и ноги! (Но тогда у вас будет инструмент, которым можно пользоваться только одной рукой ...)

1
ответ дан 3 December 2019 в 05:58
поделиться

Я бы посоветовал сохранить данные в базе данных SQLite . Структуры могут храниться в виде строк базы данных в таблицах SQLite.

Полученный файл базы данных является двоично-совместимым на многих различных платформах и может быть сохранен как большой двоичный объект в вашей основной базе данных. Я считаю, что размер файла сопоставим со сжатым файлом XML с теми же данными, но использование памяти во время обработки будет значительно меньше, чем у XML DOM.

1
ответ дан 3 December 2019 в 05:58
поделиться
Другие вопросы по тегам:

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