This presentation covers a number of the way that you can tune PostgreSQL to better handle high write workloads. We will cover both application and database tuning methods as each type can have substantial benefits but can also interact in unexpected ways when you are operating at scale. On the application side we will look at write batching, use of GUID's, general index structure, the cost of additional indexes and impact of working set size. For the database we will see how wal compression, auto vacuum and checkpoint settings as well as a number of other configuration parameters can greatly affect the write performance of your database and application.
MySQL NDB Cluster 8.0 SQL faster than NoSQL Bernd Ocklin
MySQL NDB Cluster running SQL faster than most NoSQL databases. Benchmark results, comparisons and introduction into NDB's parallel distributed in-memory query engine. MySQL Day before FOSDEM 2020.
This presentation covers a number of the way that you can tune PostgreSQL to better handle high write workloads. We will cover both application and database tuning methods as each type can have substantial benefits but can also interact in unexpected ways when you are operating at scale. On the application side we will look at write batching, use of GUID's, general index structure, the cost of additional indexes and impact of working set size. For the database we will see how wal compression, auto vacuum and checkpoint settings as well as a number of other configuration parameters can greatly affect the write performance of your database and application.
MySQL NDB Cluster 8.0 SQL faster than NoSQL Bernd Ocklin
MySQL NDB Cluster running SQL faster than most NoSQL databases. Benchmark results, comparisons and introduction into NDB's parallel distributed in-memory query engine. MySQL Day before FOSDEM 2020.
37. 使用“通用语言”
(5)“通用语言”之于系统测试
Title (one line describing the story)
Narrative:
As a [role]
I want [feature]
So that [benefit]
Acceptance Criteria: (presented as Scenarios)
Scenario 1: Title
Given [context]
And [some more context]...
When [event]
Then [outcome]
And [another outcome]...
Scenario 2: ...
Story: Account Holder withdraws cash
As an Account Holder
I want to withdraw cash from an ATM
So that I can get money when the bank is closed
Scenario 1: Account has sufficient funds
Given the account balance is $100
And the card is valid
And the machine contains enough money
When the Account Holder requests $20
Then the ATM should dispense $20
And the account balance should be $80
And the card should be returned
Scenario 2: Account has insufficient funds
Given the account balance is $10
And the card is valid
And the machine contains enough money
When the Account Holder requests $20
Then the ATM should not dispense any money
And the ATM should say there are insufficient funds
And the account balance should be $20
And the card should be returned
Scenario 3: Card has been disabled
Given the card is disabled
When the Account Holder requests $20
Then the ATM should retain the card
And the ATM should say the card has been retained
【Who】
【What】
【Why】
【Where, When】
【How】
Specification By Example & BDD
public class CashWithdrawingSteps {
private Account account;
private ATM atm;
private Card card;
private BigDecimal dispense;
private Throwable throwable;
@BeforeScenario
public void beforeScenario{
……
}
@Given(“the card is disabled”)
public void givenCardIsDisabled() {
card.setValid(false);
}
@Then("the ATM should retain the card")
public void thenATMShouldRetainCard() {
Assert.assertNull(dispense);
Assert.assertTrue(throwable instanceof CardRetainedException);
}
/**
* @param amount
* the amount of requested money
*/
@When("the account holder requests $amount")
public void whenAccountHolderRequestsMoney(@Named("amount") BigDecimal amount) {
try {
dispense = atm.withdraw(card, amount);
} catch (CardRetainedException exception) {
throwable = exception;
} catch (InsufficientFundsException exception) {
throwable = exception;
}
}
}
public class AccountStories extends JUnitStories {
protected List<String> storyPaths {
return new StoryFinder().findPaths(CodeLocations.codeLocationFromPath(), “xyz/stories/*.story”, “”);
}
}
46. 领域的裂变
(1)识别不同业务线(分区的引入)
Manage Enterprise
(Manage Processes)
Support Activities
(Support Processes)
Value Chain
(Core Processes)
Value Chain
(Core Processes)
A value chain is a set of
activities that a firm
operating in a specific
industry performs in
order to deliver a
valuable product( i.e., go
od and/or service) for
the market.