Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Сервисная база данных / 25 сообщений из 32, страница 1 из 2
25.01.2016, 08:18
    #39154228
CEMb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервисная база данных
В общем, такой полуфиласофский вопрос.

Хочется под настройки, метаданные и всё, что не связано с данными, хранить в отдельной базе.
Вопрос в том, что выбрать?

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

Пока вижу два варианта:
1. текстовый файл, через ado. Но подозреваю, тут всё будет не очень удобно.
2. sqlite. Но надо что-то себе в код встраивать.

с обоими вариантами никогда не работал.

может ещё что-то?
...
Рейтинг: 0 / 0
25.01.2016, 08:25
    #39154231
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервисная база данных
Еще можно XML, JSON, INI.
...
Рейтинг: 0 / 0
25.01.2016, 09:13
    #39154247
CEMb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервисная база данных
Dima T,

xml как xml, или какой-то провайдер может с ним работать как с базой?
я думал про просто xml+boost, то хотелось бы работать с этим хранилищем именно через sql.
...
Рейтинг: 0 / 0
25.01.2016, 09:54
    #39154273
CEMb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервисная база данных
3. MS Sql?
Только к нему нужен манагер.
...
Рейтинг: 0 / 0
25.01.2016, 10:09
    #39154282
CEMb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервисная база данных
2. sqlite.
слишком дофига потенциальных языков и сред использования, оно всё, конечно, есть, но по несколько раз встраивать в разные среды не хочется.
...
Рейтинг: 0 / 0
25.01.2016, 10:09
    #39154283
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервисная база данных
Ты бы немного поподробнее описал что за метаданные хранить собираешься и какой у них объем.

У меня для настроек используются INI. Есть WinAPI заточенное на быстрое чтение. Этих настроек обычно немного: пара десятков строк.
...
Рейтинг: 0 / 0
25.01.2016, 10:16
    #39154286
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервисная база данных
CEMb,

sqlite

хотя json тоже очень хорошо было бы.
...
Рейтинг: 0 / 0
25.01.2016, 10:20
    #39154290
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервисная база данных
CEMb,


Еще есть boost;::program-options или что-то в этом роде, там кажется можно тоже в файл записать опции как параметры, и оно это Парсит
...
Рейтинг: 0 / 0
25.01.2016, 11:00
    #39154314
Siemargl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервисная база данных
Думал насоветовать MSXML, но то что удобно в С#, в С++ очень тяжело пишется (

https://msdn.microsoft.com/en-us/library/ms767609(v=vs.85).aspx

Есть еще такой пример из dlib
http://dlib.net/config_reader_ex.cpp.html
...
Рейтинг: 0 / 0
25.01.2016, 11:29
    #39154332
CEMb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервисная база данных
[quot]Ты бы немного поподробнее описал что за метаданные хранить собираешься и какой у них объем.
[quot]

Ну, например, названия колонок таблиц. В виде таблицы:

id_таблицы, номер_колонки, название, свойства, скрипт, ...

Или настройки соединений, в виде таблицы:

название, строка_коннекта, логин, пароль, свойства, скрипт, скрипт, скрипт, ...


пока остановился на текстовых файлах, потому что:
1. не требует лишних инсталляций
2. легко переносимо, даже частями, что может быть полезно
минусы:
1. редактирование, к примеру, если это csv, то запятую не поиспользуешь
...
Рейтинг: 0 / 0
25.01.2016, 11:33
    #39154335
kealon(Ruslan)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервисная база данных
CEMb,
можно их вообще скриптом писать (LUA очень маленький)
...
Рейтинг: 0 / 0
25.01.2016, 11:42
    #39154344
CEMb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервисная база данных
kealon(Ruslan),

таблицы?

а как lua интегрируется в с++ проекты? Давно хотел его погонять, всё не было случая...
...
Рейтинг: 0 / 0
25.01.2016, 13:03
    #39154457
kealon(Ruslan)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервисная база данных
CEMbkealon(Ruslan),

таблицы?

а как lua интегрируется в с++ проекты? Давно хотел его погонять, всё не было случая...
да просто там всё, на оффсайте есть вся инфа, функции просто свои к движку добавляешь
движок можно и слинковать и отдельной dll-кой

А по таблицам надо просто через свои функции описать их создание-валидацию. Если я правильно понимаю у тебя фактически метаинформация по ним, а не сами таблицы.
...
Рейтинг: 0 / 0
25.01.2016, 13:12
    #39154467
kealon(Ruslan)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервисная база данных
CEMb,

пример на паскале, повыдёргивал из рабочего проекта, но на C, C++ будет тоже самое

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
//  открываем контекст и добавляем модули которые можно испольовать
  L:=lua_open();
  luaopen_base(L);                //* открывает основную библиотеку */
  luaopen_table(L);            //* открывает библиотеку table */
//  luaopen_io(L);               //* открывает библиотеку I/O */
  luaopen_string(L);           //* открывает библиотеку string */
  luaopen_math(L);             //* открывает библиотеку math */

// регистрируем свойю функцию
  lua_register(L,'print',@MyLUA_Print);

// здесь собственно сам вызов скрипта
  TestLUAException(luaL_loadfile(L, PChar(fn)));
  TestLUAException(lua_pcall(L, 0, LUA_MULTRET, 0));

  // закрываем контекст
  if Assigned(L) then begin
    lua_close(L);
  end;     
// функция-пример, просто объединяет все параметры в строку и выводит
function MyLUA_Print(L:Plua_State):Integer;cdecl;
var i,k:integer;
  s,t:string;
begin
  k:=lua_gettop(L);

  s:='';
  for i:=0 to k-1 do begin
    t:=lua_tostring(L, -(k-i));
    //if t='' then t:='{}';
    if s<>'' then begin
      s:=concat(s,' ',t);
    end else begin
      s:=t;
    end;
  end;
  lua_pop(L, k);

  Writeln(s);

  Result:=0;
end;

...
Рейтинг: 0 / 0
25.01.2016, 13:44
    #39154510
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервисная база данных
CEMbНу, например, названия колонок таблиц. В виде таблицы:

id_таблицы, номер_колонки, название, свойства, скрипт, ...
Зачем свое хранилище под это?

Таблицы ведь где-то в СУБД? Пиши скрипт сразу на языке СУБД:
Код: sql
1.
2.
3.
if not exists MyTable then create MyTable (...)
if not exists MyTable.Field1 then alter MyTable add Field1 ...
...


и запускай его при необходимости. Например при смене версии клиентского EXE.
Например при старте запросил версию из базы, сравнил с версией ЕХЕ, несовпало - запустил скрипт, сохранил версию в базу.

ИМХУ нет смысла структуру базы полностью дублировать в метаданные. У тебя юзеры руками в базе ковыряются и структуру таблиц меняют? Сомневаюсь.

Возьми за правило все изменения структуры делать этим скриптом, в т.ч. при разработке, тогда при необходимости что-то изменить в структуре просто дописал что надо изменить в конец скрипта и все.
...
Рейтинг: 0 / 0
25.01.2016, 13:48
    #39154520
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервисная база данных
CEMbНу, например, названия колонок таблиц. В виде таблицы:

id_таблицы, номер_колонки, название, свойства, скрипт, ...
Вообще-то они уже и так хранятся в самой БД.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
26.01.2016, 07:22
    #39155207
CEMb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервисная база данных
Dima T,
я не могу так лезть в базу данных, там всё строго регламентировано, свои инструменты и "DBA inside" :)
Юзеры посредством админского софта там ковыряются и могут менять структуру таблиц. Это происходит редко, но происходит.
Структура БД у меня не копируется, а перекрывается и дополняется.

Dimitry Sibiryakov,
там специальные названия для колонок, их менять нельзя, они используются кодом базы данных и кодом прикладного софта(там даже на самом деле сложные views используются, которые генерятся самой БД с учётом разных факторов, ни у кого нет прямого доступа к таблицам). В самой базе данных есть метаданные по колонкам, названия, свойства для использования в прикладном софте.
Мне туда нельзя. Моя задумка: сделать стороннюю надстройку для себя. У меня появились задачи, которые существующий софт не решает. Свой код я напишу быстро, но чтобы всё отображалось красиво, нужны настройки для отображения. Их будет много, их лучше хранить в базе, в сторонней, иначе админы меня убьют, если что-то левое обнаружат.

Т.е. вопрос лезть или не лезть в основную базу, не стоИт :) Сами архитекторы давно мечтают вынести всю метаинформацию в отдельную базу данных, что позволит делать накаты, не затрагивая саму базу, а так же легко переносит базу с данными без учёта, какая версия прикладного софта сейчас установлена, и т.д. Т.е. по нормальному, отделить код и описание от самих данных. Но это стоит больших денег, никто на это просто так не согласится.

А я для себя персонально могу. У меня пока отдельные запросы и отображение данных, просто хочется красоты и больше функционала, и всё это сериализовать. Вопрос в том, как быстро и просто это сделать. Попробовал и решил пока остановиться на файлах.
...
Рейтинг: 0 / 0
26.01.2016, 22:40
    #39156094
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервисная база данных
CEMb,

Ну тогда бери любой из вариантов которые ты упомянул в первом посте. Какой покажется более легким в реализации, тот и бери.
В описанной задаче они будут равноценными.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
15.04.2019, 06:50
    #39801207
CEMb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервисная база данных
CEMb3. MS Sql
Мечты сбываются!.. купила бабка порося


Итак, есть:
- база данных MSSQL, в винде, из коробки.
- приложение, которое работает с внешней базой данных, где много всякого.

хочется:
- создавать в локальной MSSQL копии некоторых данных внешней базы, чтобы не ходить полпланеты каждый раз за ними.
- чтобы приложение, открывшись первый раз и получив trusted_connection к master, могло создать себе базу и нужные таблицы в ней.

что пока получилось:
- Create database myBase - получаю permisson denied in database 'master'.

Возможно ли вообще любому приложению создать базу?
Т.е. я сейчас могу пойти в студию, там открыть SQL browser и там создать базу и выдать права, ок. Но я не могу это сделать у всех других пользователей софта.
Может быть можно сделать базу, сбакапить её, а потом как-то накатить из ресурсов программы?
С другой стороны, почему я в студии под доменным коннектом могу создать базу, а в приложении под тем же(?) коннектом - не могу? Может, connection string надо как-то правильно уметь готовить?
...
Рейтинг: 0 / 0
15.04.2019, 08:41
    #39801236
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервисная база данных
CEMbМожет, connection string надо как-то правильно уметь готовить?
Скорее всего проблема именно тут, т.к. все описанные проблемы только из-за отсутствия прав у того, кто указан в connection string.
...
Рейтинг: 0 / 0
15.04.2019, 13:22
    #39801466
CEMb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервисная база данных
Dima T, ага, а как узнать, как правильно приготовить connection string? :)
Т.е. юзер с виндовой аутентификацией, хочет создать себе базу...
...
Рейтинг: 0 / 0
15.04.2019, 13:30
    #39801474
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервисная база данных
Не пробовал, но вроде так
Код: plaintext
1.
Driver={ODBC Driver 13 for SQL Server};server=<server>;database=<database>;trusted_connection=Yes;
...
Рейтинг: 0 / 0
15.04.2019, 13:41
    #39801488
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервисная база данных
У него прав на создание базы нет, а не проблема с коннектом.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
15.04.2019, 13:49
    #39801492
CEMb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервисная база данных
Dima Ttrusted_connection=Yesпробовал, permission denied

Dimitry SibiryakovУ него прав на создание базы нет, а не проблема с коннектом.ну вот там вроде как можно на коннекте права получить.

я нашёл такое, что можно указать файл для создания базы данных для юзера, у которого вообще нет прав на машине. тут , но оно у меня выпадает с ошибкой на Integrated Security=true;
...
Рейтинг: 0 / 0
15.04.2019, 14:14
    #39801513
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервисная база данных
CEMbну вот там вроде как можно на коннекте права получить.

Это было бы слишком большой дырой в безопасности если бы любой пользователь мог положить
сервер тупо создав кучу баз и забив всё место на диске.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Сервисная база данных / 25 сообщений из 32, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]