powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / В рамках импортозамещения предлагаю обсудить новую базу (Днипра)
25 сообщений из 305, страница 6 из 13
В рамках импортозамещения предлагаю обсудить новую базу (Днипра)
    #39209122
Adx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Adx
Гость
stopAdxДобавлю по скорости MS SQL. Посмотрел Ваше сравнение.
Если бы у меня сотрудник написал написал такой код, какой написали Вы, я бы его уволил. Ну не уволил, но такого на работу бы точно не взял. Вы абсолютно ничего не понимаете в RDBMS. Да-да, я понимаю что Вы не "чукча читатель", но тогда не позорьтесь, не приводите такие примеры.

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

Не надо меня сравнивать с человеком, который написал такой код. Писать код для Ваших тестов неинтересно, поскольку никому не нужен тест на 100 одинаковых записях. Возьмите миллион РАЗНЫХ записей, на них и тестируйте. Зачем создавать индексы, если поиск все равно идет полным перебором?
...
Рейтинг: 0 / 0
В рамках импортозамещения предлагаю обсудить новую базу (Днипра)
    #39209125
stop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Adxstopпропущено...


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

Не надо меня сравнивать с человеком, который написал такой код. Писать код для Ваших тестов неинтересно, поскольку никому не нужен тест на 100 одинаковых записях. Возьмите миллион РАЗНЫХ записей, на них и тестируйте. Зачем создавать индексы, если поиск все равно идет полным перебором?

Я вас сравниваю, потому что как всегда, заявлений много.
А как к делу ...
...
Рейтинг: 0 / 0
В рамках импортозамещения предлагаю обсудить новую базу (Днипра)
    #39209207
Adx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Adx
Гость
stopЯ вас сравниваю, потому что как всегда, заявлений много.
А как к делу ...

Я участвовать в разработке и тестировании не собирался, это я сразу написал.
Если Вам нужна помощь, так и напишите:
" Нужна помощь в разработке и тестировании новой базы (Днипра) ",
а не " В рамках импортозамещения предлагаю обсудить новую базу (Днипра) "
Отметил очевидные вещи, так Вы сразу воспринимаете их как оскорбление.
Вы же предлагаете участвовать в обсуждении, относитесь тогда нормально к критике.
Не хотите - не надо, отвечайте только на хвалебные отзывы.

PS
Ни в коем случае не стремлюсь отговорить Вас от работы над базой. Кто, знает, может через пять лет будете в числе ведущих поставщиков СУБД.
...
Рейтинг: 0 / 0
В рамках импортозамещения предлагаю обсудить новую базу (Днипра)
    #39209230
Владимир2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stop

Как по мне у вас интересная разработка и у нее уже имеется некая /и не малая/ ниша в использовании.
То что вы стараетесь выйти на уровень ниши, занимаемых СУБД, на мой взгляд ошибочный подход.
И если будете его развивать, то скорее всего погубите все то хорошее, что у вас у же имеется.

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

Удачи не желаю /это для неверующих/.

С Богом!
...
Рейтинг: 0 / 0
В рамках импортозамещения предлагаю обсудить новую базу (Днипра)
    #39209242
stop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир2012stop

Как по мне у вас интересная разработка и у нее уже имеется некая /и не малая/ ниша в использовании.
То что вы стараетесь выйти на уровень ниши, занимаемых СУБД, на мой взгляд ошибочный подход.
И если будете его развивать, то скорее всего погубите все то хорошее, что у вас у же имеется.

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

Удачи не желаю /это для неверующих/.

С Богом!

Спасибо за отзыв !
Конечноже не мало времени потрачено чтобы сделать действительно удобный инструмент.
...
Рейтинг: 0 / 0
В рамках импортозамещения предлагаю обсудить новую базу (Днипра)
    #39209255
stop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AdxstopЯ вас сравниваю, потому что как всегда, заявлений много.
А как к делу ...

Я участвовать в разработке и тестировании не собирался, это я сразу написал.
Если Вам нужна помощь, так и напишите:
" Нужна помощь в разработке и тестировании новой базы (Днипра) ",
а не " В рамках импортозамещения предлагаю обсудить новую базу (Днипра) "
Отметил очевидные вещи, так Вы сразу воспринимаете их как оскорбление.
Вы же предлагаете участвовать в обсуждении, относитесь тогда нормально к критике.
Не хотите - не надо, отвечайте только на хвалебные отзывы.

PS
Ни в коем случае не стремлюсь отговорить Вас от работы над базой. Кто, знает, может через пять лет будете в числе ведущих поставщиков СУБД.

Да есть уже разные темы.
Ладно, вернемся в более конструктивное русло.
Предлагаю подумать над следующей задачей.
Есть каскадные транзакции.

Чтото вроде
BeginTran(ReadCommited)
...BeginTran(ReadCommited)
......BeginTran(Snapshot)
......CommitTran()
...CommitTran()
CommitTran()

Вопрос - как должни согласовываться уровни изоляций разных транзакций.
Например, правильно ли что внутренняя транзакция не может иметь выше уровень изоляции
чем родительская транзакции. Или если внутренняя транзакция потребовала повысить уровень изоляции, уровень родительской транзакции тоже должен быть повышен ?

Примеры реализации в других БД ?
И главное, почему так реализовано.
Пока склоняюсь к версии, что верхний уровень изоляции не должни превышать внутреннии транзакции.
Этот же метод наиболее легок в реализации.
...
Рейтинг: 0 / 0
В рамках импортозамещения предлагаю обсудить новую базу (Днипра)
    #39209283
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stop,

в других СУБД есть
- обычные транзакции
- 2PC транзакции
- точки сохранения (некоторые их называют вложенными транзакциями, но на деле это не так)
- автономные транзакции

Последние действительно вложенные.
...
Рейтинг: 0 / 0
В рамках импортозамещения предлагаю обсудить новую базу (Днипра)
    #39209302
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stop,

якобы вложенные транзакции в полноценном виде вообще нигде не реализованы.

stopПока склоняюсь к версии, что верхний уровень изоляции не должни превышать внутреннии транзакции.
тут не нужно версий. Если исходная транзакция имеет уровень изолированности snapshot, вложенные транзакции никак не могут иметь уровень изолированности read committed. Вернее, могут, но толку от этого не будет никакого. Потому что в контексте внешней транзакции они все равно будут видеть только snapshot.
...
Рейтинг: 0 / 0
В рамках импортозамещения предлагаю обсудить новую базу (Днипра)
    #39211397
stop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Честные каскады.
Протестировано.

Код: plaintext
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.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
void testCascadeTran()
{
	char jsonResult[1024];
 
	DniproDB* db = new DniproDB();
	db->init();
 
	uint docID;
 
	{//LEVEL 1 ===============================================================
	 //tran level 1
		uint tranLevel1 = db->beginTran(READ_COMMITED_TRAN);
 
		//add doc with one attribute, level 1
		docID = db->addDoc("{'attr1':'lev1'}", tranLevel1);
 
		{//LEVEL 2 ==============================================================
		 //tran level 2
			uint tranLevel2 = db->beginTran(READ_COMMITED_TRAN, tranLevel1);
 
			//add to doc one new attribute
			db->insPartDoc("{'attr2':'lev2'}", docID, tranLevel2);
 
			//in doc 2 attributes {'attr1':'Lev1', 'attr2':'Lev2'}
			db->getPartDoc("{'attr1':$, 'attr2':$, 'attr3':$}", jsonResult, docID, tranLevel2);
 
			{//LEVEL 3 ==============================================================
			 //tran level 3
				uint tranLevel3 = db->beginTran(READ_COMMITED_TRAN, tranLevel2);
 
				//add to doc next attribute
				db->insPartDoc("{'attr3':'lev3'}", docID, tranLevel3);
 
				//in doc 3 attributes {'attr1':'Lev1', 'attr2':'Lev2', 'attr3':'Lev3'}
				db->getPartDoc("{'attr1':$, 'attr2':$, 'attr3':$}", jsonResult, docID, tranLevel2);
 
				db->commitTran(tranLevel3);
			}//=====================================================================
 
			 //in doc 3 attributes {'attr1':'Lev1', 'attr2':'Lev2', 'attr3':'Lev3'}
			db->getPartDoc("{'attr1':$, 'attr2':$, 'attr3':$}", jsonResult, docID, tranLevel2);
 
			db->rollbackTran(tranLevel2);
		}//=====================================================================
 
		 //in doc 1 attribute {'attr1':'Lev1'}, other two were rollbacked
		db->getPartDoc("{'attr1':$, 'attr2':$, 'attr3':$}", jsonResult, docID, tranLevel1);
 
		//outrside tran document found nothing
		db->getPartDoc("{'attr1':$, 'attr2':$, 'attr3':$}", jsonResult, docID, 0);
 
		//commit tran level 1
		db->commitTran(tranLevel1);
 
	}//=====================================================================
 
	 //in doc 1 attribute {'attr1':'Lev1'}
	db->getPartDoc("{'attr1':$, 'attr2':$, 'attr3':$}", jsonResult, docID, 0);
}
...
Рейтинг: 0 / 0
В рамках импортозамещения предлагаю обсудить новую базу (Днипра)
    #39213106
stop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Портировал сервер под Линукс.
Теперь доступно с обоих ОСей. Под Линукс правда клиентов нет толкового, только урезаный Джавай клиент,
но можно поиграться в конскольке, повыполнять запросы.
...
Рейтинг: 0 / 0
В рамках импортозамещения предлагаю обсудить новую базу (Днипра)
    #39213219
Владимир2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stop Портировал сервер под Линукс.
Вот неплохо бы hub с examples завести /с готовыми проектами под Visual Studio 2013 community/.
Как по мне, то "на посмотреть" желающих было бы много больше.
А там смотришь и использовать начнут ...
...
Рейтинг: 0 / 0
В рамках импортозамещения предлагаю обсудить новую базу (Днипра)
    #39213510
stop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть такие проекты в специальном репозитории.
Там сейчас один проект, но вообще их уже три, просто остальные не выложены.
Цель их - дать шаблон на типовые задачи и показать качество (размер, понятность) кода.
...
Рейтинг: 0 / 0
В рамках импортозамещения предлагаю обсудить новую базу (Днипра)
    #39213515
stop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Там в MVC немного намешано кода.
По сути, вся бизнесс логика Форума (очень похожего на этот) заключена в этих четырех контроллерах.

https://github.com/Bazist/DniproExamples/tree/master/DniproForum/DniproForum/Controllers
...
Рейтинг: 0 / 0
В рамках импортозамещения предлагаю обсудить новую базу (Днипра)
    #39213524
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гы...
Код: c#
1.
2.
3.
4.
5.
public ActionResult send(Article a)
{
    a.Validate();

    a.ID = db.GetAll().Count() + 1;


А сама Днипра может сгенерировать идентификатор? :)
...
Рейтинг: 0 / 0
В рамках импортозамещения предлагаю обсудить новую базу (Днипра)
    #39213594
stop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAГы...
Код: c#
1.
2.
3.
4.
5.
public ActionResult send(Article a)
{
    a.Validate();

    a.ID = db.GetAll().Count() + 1;


А сама Днипра может сгенерировать идентификатор? :)

А Монго может ?
Кромето того что бесполезный Guid
...
Рейтинг: 0 / 0
В рамках импортозамещения предлагаю обсудить новую базу (Днипра)
    #39213611
stop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, этот пример давно писали.
От Ид конечноже можно избавиться. Каждый добавленный документ в базу имеет свой ИД
автоматически.

Спасибо за замечание, будет время, перепишу и сделаю код еще более коротким
...
Рейтинг: 0 / 0
В рамках импортозамещения предлагаю обсудить новую базу (Днипра)
    #39214165
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stopskyANAГы...
Код: c#
1.
2.
3.
4.
5.
public ActionResult send(Article a)
{
    a.Validate();

    a.ID = db.GetAll().Count() + 1;


А сама Днипра может сгенерировать идентификатор? :)

А Монго может ?
ObjectId
...
Рейтинг: 0 / 0
В рамках импортозамещения предлагаю обсудить новую базу (Днипра)
    #39216200
stop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добавил еще один минипроект, в коллекцию примеров использования этой СУБД в рамках тестирования
каскадных транзакций.

Минипроект моделирует форму сохранения конфигурации настроек.
1. Мапит все три формы на один большой документ и сохраняет его в базу.
2. Позволяет каскадно редактировать каждую настройку. Тоесть клацнули, открылась дочерняя форма, снова клацнули снова открылась дочерняя форма. Вся логика на всех формах с ОК\Отмена сохранена.
3. Позволяет очень просто расширять код. Если на форме появится еще десять контролов, то код почти не выростит по обьему.
4. При добавлении новой дочерней формы - обычный копипаст. Лезть в дебри парент формы и чтото там разбираться и прописывать дополнительно, не нужно.
5. Работает быстро, кода мало, код сам по себе очень простой.

Иходники
https://github.com/Bazist/DniproExamples/blob/master/ConfigScreenOnCascadeTran/ConfigScreenOnCascadeTran/MainForm.cs
https://github.com/Bazist/DniproExamples/blob/master/ConfigScreenOnCascadeTran/ConfigScreenOnCascadeTran/ChildForm.cs
https://github.com/Bazist/DniproExamples/blob/master/ConfigScreenOnCascadeTran/ConfigScreenOnCascadeTran/SubChildForm.cs
...
Рейтинг: 0 / 0
В рамках импортозамещения предлагаю обсудить новую базу (Днипра)
    #39216309
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stopДобавил еще один минипроект, в коллекцию примеров использования этой СУБД в рамках тестирования
каскадных транзакций.

Минипроект моделирует форму сохранения конфигурации настроек.
1. Мапит все три формы на один большой документ и сохраняет его в базу.
2. Позволяет каскадно редактировать каждую настройку. Тоесть клацнули, открылась дочерняя форма, снова клацнули снова открылась дочерняя форма. Вся логика на всех формах с ОК\Отмена сохранена.
3. Позволяет очень просто расширять код. Если на форме появится еще десять контролов, то код почти не выростит по обьему.
4. При добавлении новой дочерней формы - обычный копипаст. Лезть в дебри парент формы и чтото там разбираться и прописывать дополнительно, не нужно.
5. Работает быстро, кода мало, код сам по себе очень простой.

Иходники
https://github.com/Bazist/DniproExamples/blob/master/ConfigScreenOnCascadeTran/ConfigScreenOnCascadeTran/MainForm.cs
https://github.com/Bazist/DniproExamples/blob/master/ConfigScreenOnCascadeTran/ConfigScreenOnCascadeTran/ChildForm.cs
https://github.com/Bazist/DniproExamples/blob/master/ConfigScreenOnCascadeTran/ConfigScreenOnCascadeTran/SubChildForm.cs
А при чём тут СУБД и какие-то каскадные транзакции?
...
Рейтинг: 0 / 0
В рамках импортозамещения предлагаю обсудить новую базу (Днипра)
    #39216314
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посмотрел код... Это зло :)
...
Рейтинг: 0 / 0
В рамках импортозамещения предлагаю обсудить новую базу (Днипра)
    #39216360
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAПосмотрел код... Это зло :)Вы если такое пишите, то какие-то обоснования приводите, иначе как-то гаденько выглядит
...
Рейтинг: 0 / 0
В рамках импортозамещения предлагаю обсудить новую базу (Днипра)
    #39216410
Владимир2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stopДобавил еще один минипроект, в коллекцию примеров использования этой СУБД в рамках тестирования
каскадных транзакций.
Рад за вас.
Надеюсь вас уговаривать не нужно, что вы на правильном пути и делаете хороший framework?
/но работы у вас еще "не початый край"/

С Богом!
...
Рейтинг: 0 / 0
В рамках импортозамещения предлагаю обсудить новую базу (Днипра)
    #39216452
stop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAА при чём тут СУБД и какие-то каскадные транзакции?

Так вы код вообще смотрели ?
Или это была оценка авансом.

Впринципе, код ничего сложного не делает. Но он легко расширяем, функционален и его логика максимально прозрачна.



В основе кода лежит один (большой) JSON документ который хранит настройки системы.
Он хранится в базе данных. Точней при открытии формы его там даже нет, приложение само его создает
и обновляет (добавляет новые аттрибуты).

Его вид
Код: javascript
1.
{'type':'config', 'confVal1':'value', 'confVal2':'value', 'confVal3':'value', 'confVal4':'value' }



Дальше чтобы редактировать этот документ из приложения, открывается форма, с которой открывается еще одна, потом еще одна.
Как на скрине. Все они редактируют свою часть JSON документа. Для этого редактирование каждой подчасти документа, происходит в отдельной, вложеной транзакции. На каждой кнопке Коммит или Роллбек, что позволяет выдержать следующую логику:
Если на дочерних формах нажата кнопка ОК, а на родительской Cancel то изменения не сохраняются.

Этот код просто показывает шаблон проектирования на основе интерактивной, каскадной транзакции.
Его плюс, он не требует реализации дополнительных контейнеров по шаблону Memento (Хранитель) или использование биндингов.
Он также показывает один из главных принципов SOLID, когда мы добавляем новую дочернюю форму, нам абсолютно ничего не нужно менять в родительских, более глубоких слоях приложения. Эта форма просто берет на себя ответственность редактировать определенную вложеную часть нашего JSON документа.

Ну и наконец, он работает быстрее, даже не за счет базы данных, а за счет того, что данные мы загружаем в базу данных порциями. Допустим у нас на дочерней форме нужно грузить фотографии в конф скрине. Мы их загружаем по одной в транзакции, а не скопом на финальной стадии.
...
Рейтинг: 0 / 0
В рамках импортозамещения предлагаю обсудить новую базу (Днипра)
    #39216528
stop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстате еще вскользь пробегусь по SOLID архитектуре.
Почему код Днипры полностью отвечает SOLID, а другой код - нет или нужно хорошо постараться довести его до этого.

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

Single Responsibility - Каждая дочерняя форма редактирует свою маленькую часть Джисон документа. Чаилд ответственен только за редактирование этой части документа и не лезет не в слои выше себя, не в слои ниже себя в иерахическом документе.

Open/Closed principle - Каждая форма любого уровня открыта для расширения, но закрыта для изменения. Если нам нужно редактировать вложеную сущность, мы просто добавлем копипастом новый чаилд и он на себя берет часть ответственности за редактирование маленькой части Джисон документа уровня выше.

Liskov substitution - Принцип, когда парент форма коммитит данные она абсолютно не знает какая глубина дочерних форм была открыта и изменена. Она просто коммитит изменения. Фрактально и рекурсивно.

Interface segregation - В коде вы не увидите множество разных функций. Все поделено на максимально простые методы, эти методы похожи друг на друга и каждая форма может их использовать по своему усмотрению.
Интерфейсы максимально раздроблемы на маленькие части.

Dependency inversion principle - И наконец инверсия зависимостей. Вы редактируете или добавляете новую дочернюю форму при этом родительская форма абсолютно никак не меняется. Нижний слой не зависит от верхних слоев.
Если в вашем Мементо или другом контейнере родительская форма берет на себя обязаность сохранять изменения своих чаилдов - то вы явно можете пролететь с СОЛИДом. В сложном приложении это означает, что при добавлении маленькой пимпачки прийдется лезть в древний и тяжелый код нижних слоев, который может быть поломан и распространить ошибки на другие свои ветки.
...
Рейтинг: 0 / 0
В рамках импортозамещения предлагаю обсудить новую базу (Днипра)
    #39217092
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergSuperskyANAПосмотрел код... Это зло :)Вы если такое пишите, то какие-то обоснования приводите, иначе как-то гаденько выглядит
Я посмотрел код и высказал своё мнение о нем в двух словах.

Обоснуйте, что же тут гаденько? :) Вы код смотрели, что о нем думаете?
...
Рейтинг: 0 / 0
25 сообщений из 305, страница 6 из 13
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / В рамках импортозамещения предлагаю обсудить новую базу (Днипра)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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