Выбор ISAM, а не SQL

Использование среза строки:

from itertools import zip_longest

s = 'example'

new_s = ''.join(x.upper() + y.lower()
                for x, y in zip_longest(s[::2], s[1::2], fillvalue=''))
# ExAmPlE

Использование итератора:

s_iter = iter(s)

new_s = ''.join(x.upper() + y.lower()
                for x, y in zip_longest(s_iter, s_iter, fillvalue=''))
# ExAmPlE

Использование функции reduce():

def func(x, y):
    if x[-1].islower():
        return x + y.upper()
    else:
        return x + y.lower()

new_s = reduce(func, s) # eXaMpLe
6
задан dkretz 2 January 2009 в 00:09
поделиться

6 ответов

Я реализовал ORM-to-isam библиотеку назад в 1990-х, которая обладала некоторым (очень) скромным успехом как условно-бесплатным программным обеспечением. Я в основном соглашаюсь с тем, что Вы говорите о достоинствах ISAMs, и я думаю, что это лучше использует ISAM при создании уровня ORM или продукта, если Вы только ищете гибкость и скорость.

Однако риск, что Вы берете, состоит в том, что Вы будете терпеть неудачу на преимуществах широкого спектра связанных с SQL продуктов теперь на рынке. В частности, инструменты создания отчетов развились, чтобы быть еще более тесно интегрированными с самыми популярными пакетами SQL. В то время как поставщики продуктов ISAM в 1990-х обеспечили драйверы ODBC для интеграции с продуктами как Crystal Reports, казалось, даже затем, что рынок отклонялся далеко от ISAM и что я рисковал бы устареванием, если бы я продолжал использовать ту технологию. Таким образом я переключился на SQL.

Один протест: это было почти десятилетие, с тех пор как я играл в песочнице ISAM, таким образом, я не могу подразумевать бодрствовать на последних инструментах ISAM и их решениях этой проблемы. Однако, если я не был убежден, что не собирался быть захваченным без поддержки инструментов создания отчетов, я не приму основанный на ISAM ORM независимо от его достоинств. И это даже не покрывает другие инструменты, доступные для основанной на SQL разработки!

1
ответ дан 10 December 2019 в 02:55
поделиться

Существуют, конечно, времена и места, где ISAM предоставляет услуги, необходимые приложению с менее стоимостью и наверху, чем полноценный SQL DBMS. Одна оборотная сторона механизма ISAM - то, что существует не обязательно системный каталог для описания данных; другой обычно - это существует немного удобных для пользователя инструментов для достигания данных. Это оба места, где RDBMS обеспечивает значительное преимущество. Лучшие ISAM (или подобный) системы оказывают поддержку транзакции - даже транзакции XA, иногда.

Где необходимо сделать сложные соединения, и вычисления (агрегируется, например), работа, сделанная DBMS, предоставляет огромные преимущества. Где все, в чем Вы нуждаетесь, является доступом к записям, затем ISAM мог быть выгодным.

Безопасность имеет тенденцию быть более трудной осуществить с основанной на ISAM системой, чем с DBMS. Кроме того, необходимо волноваться о целостности файлов в случае катастрофического отказа. Большая часть DBMS использует две архитектуры процессов (клиент DBMS в отдельном процессе с сервера DBMS), который обеспечивает устойчивость перед лицом клиента, отказывающего (или клиента выключаемый ПК). Также необходимо волноваться о резервном копировании и восстановлении - компетентный DBMS имеет в распоряжении системы для обеспечения когерентного резервного копирования базы данных, в то время как база данных используется; не ясно, что системы ISAM обеспечили бы тот уровень целостности.

В целом, учитывая подходящий механизм ISAM, там был бы по крайней мере иногда, возможно, часто, преимущества для использования механизма ISAM в системе ORM вместо полного RDBMS.

2
ответ дан 10 December 2019 в 02:55
поделиться

Я сделал свою долю dBase, Clipper и FoxPro. Однако я полагаю, что реляционная модель, обеспеченная SQL, бесконечно более мощна и полезна, и продукты как Oracle и SQL Server заслуживают своего успеха на рынке.

Я всегда удивляюсь, почему люди раздувают проблему из создания отображающегося слоя для ~80-90% случаев и записи 10-20% пользовательского SQL, чтобы иметь дело со сложными запросами (главным образом отчеты) и обработать перемещение данных в пакетном режиме. Я должен делать что-то хорошее или что-то действительно глупое путем принятия модели DAL/DAO, учитывая уровень ненависти против в спящем режиме, активная запись, и т.д. - смотри Вьетнамское обсуждение от ранее.

1
ответ дан 10 December 2019 в 02:55
поделиться

Возможно, латынь Свиньи - то, что Вы хотите? В соответствии с этой статьей http://citeseerx.ist.psu.edu/viewdoc/download;jsessionid=693D79B5EFDC0452E1C9A87D1C495D4C?doi=10.1.1.124.5496&rep=rep1&type=pdf:

"Кроме того, многие люди, которые сборник изречений - разлагает эти данные, укреплены процедурные программисты, которые находят, что описание, стиль SQL является неестественным. Успех более процедурной карты - уменьшает модель программирования и ее связанные масштабируемые реализации на товаре трудно - изделие, доказательство вышеупомянутого. Однако карта - уменьшает парадигму, слишком низкий уровень и твердый, и приводит к большому количеству пользовательского пользовательского кода, который трудно поддержать и снова использовать. Мы описываем новый язык под названием латынь Свиньи, которую мы разработали для помещений в зону наилучшего восприятия между декларативным стилем SQL, и низкий уровень, процедурный стиль карты - уменьшает".

3
ответ дан 10 December 2019 в 02:55
поделиться

База данных мультизначения кто-либо? (иначе Выбор), Думают XML без тегов. Они предшествуют RDBMS, по крайней мере, на десятилетие и все еще движению сильного, если Вы знаете, где посмотреть.

1
ответ дан 10 December 2019 в 02:55
поделиться

Old question, but interesting discussion. The concepts of ISAM are important, the additional features that we're provided in today's RDBMSs (as discussed i.e. backup, consistency, security, metadata) offer us signficant benefits.

With the NoSQL craze (yes I said it...craze) it doesn't mean that we can't model ISAM-like access inside the RDBMS. You'll be sure I'm gonna push off as much logic to the DB as I possibly can, but there are times like "traditional" data gridding/multi-dimensional data interpolation where I'll traverse all necessary records via my own logical index.

0
ответ дан 10 December 2019 в 02:55
поделиться
Другие вопросы по тегам:

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