Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
 Сущность для хранения данных. Какаю выбрать? Record, Object ... ?  [new]
OxY63rus
Member

Откуда:
Сообщений: 109
Приветствую!
Имеется клиент-серверное приложение - чат. Обмен происходит строками, в которых присутствуют специальные разделители, определяющие части. В этих частях содержатся нужные сведения о типе сообщения, отправитель, получатель и т.п. Каждое такое сообщение, а именно строка при обработке разбивается и обрабатывается. При накручивании функционала, появляется необходимость добавления новых полей и др. Поэтому возникла необходимость предусмотреть масштабируемость схемы вцелом.
Планирую создать нЕчто, хранящее необходимые сведения, к которым можно будет обращаться по имени типа
Something.TypeID
Something.Items[5].Username
Something.Items[5].Nickname
Полагаю, что если Record может содержать строки только заранее определенные в длине, то это не пойдет.
В связи с этим вопрос - какую сущность выбрать? Object?
11 окт 18, 08:38    [21701170]     Ответить | Цитировать Сообщить модератору
 Re: Сущность для хранения данных. Какаю выбрать? Record, Object ... ?  [new]
JaDi
Member

Откуда: Сызрань, Россия
Сообщений: 3711
Давно уже придумано -- формат называется JSON. В делфи он есть из коробки, либо куча отличных бесплатных компонентов. Причем с ним еще и в самой делфи легко работать.
11 окт 18, 08:41    [21701171]     Ответить | Цитировать Сообщить модератору
 Re: Сущность для хранения данных. Какаю выбрать? Record, Object ... ?  [new]
OxY63rus
Member

Откуда:
Сообщений: 109
JaDi, спасибо за совет. Организовано всё в Delphi 7. Надеюсь, не будет проблем.
11 окт 18, 08:49    [21701174]     Ответить | Цитировать Сообщить модератору
 Re: Сущность для хранения данных. Какаю выбрать? Record, Object ... ?  [new]
zinpub
Member

Откуда:
Сообщений: 244
А при чём здесь JSON? Для обмена - да подойдёт.

А вопрос(я так понял) про оперативное хранение. Тогда да Объект и в TList его... Либо если действий с объектом не предусмотрено то и рекорда хватит
11 окт 18, 09:00    [21701178]     Ответить | Цитировать Сообщить модератору
 Re: Сущность для хранения данных. Какаю выбрать? Record, Object ... ?  [new]
zinpub
Member

Откуда:
Сообщений: 244
И record может содержать строки любой длины(точнее ссылки на них)
11 окт 18, 09:13    [21701183]     Ответить | Цитировать Сообщить модератору
 Re: Сущность для хранения данных. Какаю выбрать? Record, Object ... ?  [new]
Valery_B
Member

Откуда: Москва
Сообщений: 1755
OxY63rus
В связи с этим вопрос - какую сущность выбрать? Object?

Да.
Надо сделать так:

type
 TUserInfo  = class
   property UserName:string;
   property NickName:string;
   function IsMemberOf(GroupID:Integer):Boolean;
   ....
  end;

OxY63rus
Планирую создать нЕчто, хранящее необходимые сведения, к которым можно будет обращаться по имени типа

 TUserHolder = class TDictionary<string,TUserInfo>
   function FindUser(const UserID:string):TUserInfo
   ...
 end;  


Далее, может сериализовывать это в Json и из него.
11 окт 18, 09:26    [21701190]     Ответить | Цитировать Сообщить модератору
 Re: Сущность для хранения данных. Какаю выбрать? Record, Object ... ?  [new]
JaDi
Member

Откуда: Сызрань, Россия
Сообщений: 3711
Valery_B,

автор
delphi 7

автор
TUserHolder = class TDictionary<string,TUserInfo>
11 окт 18, 09:29    [21701196]     Ответить | Цитировать Сообщить модератору
 Re: Сущность для хранения данных. Какаю выбрать? Record, Object ... ?  [new]
tunknown
Member

Откуда:
Сообщений: 534
OxY63rus
Имеется клиент-серверное приложение - чат.
Сервер с базой данных или полностью самописный?

OxY63rus
При накручивании функционала, появляется необходимость добавления новых полей и др. Поэтому возникла необходимость предусмотреть масштабируемость схемы вцелом.
Масштабируемости велосипедом сразу достичь трудно. Хотя потом, вероятно, специализированный велосипед сможет стать лучше. Когда размер данных достигнет терабайтов.

OxY63rus
В связи с этим вопрос - какую сущность выбрать? Object?

sqlite
Он умеет хранить данные в памяти, а не только на диске в файле.
11 окт 18, 09:36    [21701203]     Ответить | Цитировать Сообщить модератору
 Re: Сущность для хранения данных. Какаю выбрать? Record, Object ... ?  [new]
Valery_B
Member

Откуда: Москва
Сообщений: 1755
автор
delphi 7

Скачать бесплатные Delphi Community Edition

JaDi,

Иначе TDictionary надо будет переводить на её аналог в D7 - TList / TStringList / TObjectList.
Только головной боли больше в разы.
11 окт 18, 09:38    [21701204]     Ответить | Цитировать Сообщить модератору
 Re: Сущность для хранения данных. Какаю выбрать? Record, Object ... ?  [new]
zinpub
Member

Откуда:
Сообщений: 244
Valery_B,

THashedStringList, хотя ну не over 100500 пользователей же там
11 окт 18, 10:01    [21701217]     Ответить | Цитировать Сообщить модератору
 Re: Сущность для хранения данных. Какаю выбрать? Record, Object ... ?  [new]
OxY63rus
Member

Откуда:
Сообщений: 109
Друзья, спасибо, что накидали идей. Valery_B, скорее всего пойду через создание класса, т.к. легче для восприятия.

P.S. да клиент-сервер самописные на дельфийских ClientSocket и ServerSocket. бд не использую
11 окт 18, 12:37    [21701466]     Ответить | Цитировать Сообщить модератору
 Re: Сущность для хранения данных. Какаю выбрать? Record, Object ... ?  [new]
Котовасия
Member

Откуда:
Сообщений: 1031
OxY63rus
...появляется необходимость добавления новых полей и др. Поэтому возникла необходимость предусмотреть масштабируемость схемы вцелом.
Планирую создать нЕчто, хранящее необходимые сведения, к которым можно будет обращаться по имени типа
Something.TypeID
Something.Items[5].Username
Something.Items[5].Nickname
Полагаю, что если Record может содержать строки только заранее определенные в длине, то это не пойдет.
В связи с этим вопрос - какую сущность выбрать? Object?


Используй СУБД. Например: SQLite, FireBird embedded.
11 окт 18, 13:08    [21701513]     Ответить | Цитировать Сообщить модератору
 Re: Сущность для хранения данных. Какаю выбрать? Record, Object ... ?  [new]
Василий 2
Member

Откуда:
Сообщений: 205
Котовасия
Используй СУБД. Например: SQLite, FireBird embedded.

Да нет, сразу Oracle enterprise, чего уж мелочиться-то!
11 окт 18, 14:40    [21701650]     Ответить | Цитировать Сообщить модератору
 Re: Сущность для хранения данных. Какаю выбрать? Record, Object ... ?  [new]
OxY63rus
Member

Откуда:
Сообщений: 109
Котовасия, хранящее не в смысле долгосрочного периода, а в смысле несущее в себе на данный момент времени. Ничего хранить не надо. Строка улетала, кому-то прилетела. Её надо обработать и забыть. Конечно базу данных разворачивать не буду
11 окт 18, 15:26    [21701698]     Ответить | Цитировать Сообщить модератору
 Re: Сущность для хранения данных. Какаю выбрать? Record, Object ... ?  [new]
Котовасия
Member

Откуда:
Сообщений: 1031
OxY63rus
Котовасия, хранящее не в смысле долгосрочного периода, а в смысле несущее в себе на данный момент времени. Ничего хранить не надо. Строка улетала, кому-то прилетела. Её надо обработать и забыть. Конечно базу данных разворачивать не буду

"Хранить не надо, передавать не надо".
И зачем тебе обращаться "по имени типа" в рантайме? Пусть "имя типа" в компайлтайме живет.
11 окт 18, 15:33    [21701708]     Ответить | Цитировать Сообщить модератору
 Re: Сущность для хранения данных. Какаю выбрать? Record, Object ... ?  [new]
rgreat
Member

Откуда:
Сообщений: 4396
Василий 2
Котовасия
Используй СУБД. Например: SQLite, FireBird embedded.

Да нет, сразу Oracle enterprise, чего уж мелочиться-то!
Hadoop!
11 окт 18, 15:35    [21701712]     Ответить | Цитировать Сообщить модератору
 Re: Сущность для хранения данных. Какаю выбрать? Record, Object ... ?  [new]
Dimonka
Member

Откуда:
Сообщений: 1075
Альтернатива JSON - суровый XML с XPATH-ом и дамами лёгкого поведения.
11 окт 18, 15:42    [21701720]     Ответить | Цитировать Сообщить модератору
 Re: Сущность для хранения данных. Какаю выбрать? Record, Object ... ?  [new]
Tactical Nuclear Penguin
Member

Откуда: холодно тут
Сообщений: 2577
Dimonka
Альтернатива JSON - суровый XML с XPATH-ом и дамами лёгкого поведения.


нечего тут
сказали хадуп, значит хадуп!
11 окт 18, 16:23    [21701764]     Ответить | Цитировать Сообщить модератору
 Re: Сущность для хранения данных. Какаю выбрать? Record, Object ... ?  [new]
OxY63rus
Member

Откуда:
Сообщений: 109
Котовасия
"Хранить не надо, передавать не надо".
И зачем тебе обращаться "по имени типа" в рантайме? Пусть "имя типа" в компайлтайме живет.

Обработать имел в виду строку раскидать по полям своего класса. И ориентироваться на их имена, а не на индексы строковых массивов при обработке строки. Тот ещё говонокод
11 окт 18, 16:34    [21701775]     Ответить | Цитировать Сообщить модератору
 Re: Сущность для хранения данных. Какаю выбрать? Record, Object ... ?  [new]
Олег Третьяков
Member

Откуда: Волгоград
Сообщений: 159
Опять народ велосипеды изобретает.
OxY63rus, ORM. Mormot к примеру. Масштабируется достаточно легко, упаковывает в JSON, шифрование, обмен через http(s), REST, авторизация, сам хостится и слушает указанный порт, держит кучу БД, еще поддерживается для D7(не точно) и т.д. Остается только описать модель и скормить это дело DB-серверу, а сам DB-сервер скормить http-серверу. На стороне клиента скормить модель http-клиенту. Останется только расставить CRUD-операции в нужных местах.
11 окт 18, 16:35    [21701777]     Ответить | Цитировать Сообщить модератору
 Re: Сущность для хранения данных. Какаю выбрать? Record, Object ... ?  [new]
Котовасия
Member

Откуда:
Сообщений: 1031
OxY63rus
Котовасия
"Хранить не надо, передавать не надо".
И зачем тебе обращаться "по имени типа" в рантайме? Пусть "имя типа" в компайлтайме живет.

Обработать имел в виду строку раскидать по полям своего класса. И ориентироваться на их имена, а не на индексы строковых массивов при обработке строки...


Если у тебя формат уже задан - в чем вопрос?
OxY63rus
...Обмен происходит строками, в которых присутствуют специальные разделители, определяющие части...
11 окт 18, 16:43    [21701788]     Ответить | Цитировать Сообщить модератору
Все форумы / Delphi Ответить